C程序中字符串指针操作导致的分段错误



下面的程序抛出分段错误。

#include<stdio.h>
int main(){
char *p = "exs";
char x;
x = (*p)++;
printf("%cn",x);
return(0);
}

请帮助。

我期待'f',但出现了段错误。

您需要首先使用strdup将字符串复制到可写内存中。然后使用++(*p)代替(*p)++来获得增加第一个字节后的值。虽然在短期进程中没有必要,但是在不使用strcpy()时,CC_5分配的内存是一种很好的风格,以避免内存泄漏。

应用这些更改后,程序看起来像这样:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char *p = strdup("exs");
char x;
x = ++(*p);
printf("%cn",x);
free(p);
return(0);
}

相关内容

  • 没有找到相关文章

最新更新