Possible Duplicate:
Getting Segmentation Fault
// reverse a string
#include`<stdlib.h>`
#include`<stdio.h>`
#include`<string.h>`
#include`<math.h>`
int main()
{
char *string = "mohit",t;
int i=0,j;
printf(" %d %d",strlen(string), (strlen(string)/2)+1);
for(i=0,j=(strlen(string)) ; i<(strlen(string)/2)+1 ; i++,j--)
{
printf("\n%d",(int) string);
printf("\n%d",(int) string+5);
printf("\ni string = %c", *(string + i));
printf("\nj string = %c", *(string + j));
t=*(string+i);
*(string+i) = *(string + j);
*(string + j) = t;
}
printf("\n = %s", string);
return 0;
}
最佳答案
字符串文字可能位于内存的只读区域;不允许将指向 1 的指针分配给指向非常量字符的指针,因此您对 string
的操作会导致未定义的行为。你要么说
const char * string = "mohit";
并且不要修改字符串,或者创建一个您可以修改的自动字符数组:
char string[] = "mohit";
后者是您的情况所需要的。
此外,作为一种风格,将 char * s, t;
写在一行中可能会产生误导;它相当于,并且应该总是被替换为 char * s; char t;
.
关于c - 运行时错误 "Segmentation Fault"。如何去除它? (我在 Ubuntu 中工作。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7064003/