C语言中如何实现字符串的反转?
这是我写的程序:#include<stdio.h>#include<string.h>string_change(char*p){inti,len;chartemp;le...
这是我写的程序:
#include<stdio.h>
#include<string.h>
string_change(char * p)
{
int i,len;
char temp;
len = strlen(p);
//test printf("%d\n",len);
for(i=0;i<(len/2);i++)
{
temp = p[i];
p[i] = p[len - i];
p[len - i] = temp;
}
}
int main()
{
char * a="1234567890";
printf("%s\n",a);
string_change(a);
printf("%s\n",a);
return 0;
}
为什么一运行就出错呢???
编译时没有错误啊?
最后那个图片打印出来的字符串是我原来的字符串,程序上改成“1234567890”了!这也不是什么要紧事儿,就给我说问题出哪里了就行! 展开
#include<stdio.h>
#include<string.h>
string_change(char * p)
{
int i,len;
char temp;
len = strlen(p);
//test printf("%d\n",len);
for(i=0;i<(len/2);i++)
{
temp = p[i];
p[i] = p[len - i];
p[len - i] = temp;
}
}
int main()
{
char * a="1234567890";
printf("%s\n",a);
string_change(a);
printf("%s\n",a);
return 0;
}
为什么一运行就出错呢???
编译时没有错误啊?
最后那个图片打印出来的字符串是我原来的字符串,程序上改成“1234567890”了!这也不是什么要紧事儿,就给我说问题出哪里了就行! 展开
1个回答
推荐于2017-09-24
展开全部
#include<stdio.h>
#include<string.h>
string_change(char * p)
{
int i,len;
char temp;
len = strlen(p);
//printf("%d \n", len);
//test printf("%d\n",len);
for(i=0; i<(len/2); i++)
{
temp = p[i];
p[i] = p[len-1-i];
p[len-1-i] = temp;
}
}
int main(void)
{
char a[20] = "1234567890";
printf("%s\n",a);
string_change(a);
printf("%s\n",a);
return 0;
}
两个明显的误解:
char* a="12***"; 这样定义是错误的。这样 a指向字符串常量的指针。而字符串常量是不能改变的。所以停止运行。
c中数组是从0开始编号的。所以字符串最后一个字符是a[len-1];
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询