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”了!这也不是什么要紧事儿,就给我说问题出哪里了就行!
展开
 我来答
匿名用户
推荐于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;
}

 两个明显的误解:

  1. char* a="12***"; 这样定义是错误的。这样 a指向字符串常量的指针。而字符串常量是不能改变的。所以停止运行。

  2. c中数组是从0开始编号的。所以字符串最后一个字符是a[len-1];

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式