下面的程序抛出分段错误。
#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);
}