可能重复:
What is the difference between char s[] and char *s in C?
Why does this program give segmentation fault?总线错误10
这里是代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void reverse(char *c){
int len = strlen(c);
char tmp;
int i;
for(i = 0; i < len; i++){
tmp = c[len-1-i];
c[len-1-i] = c[i];
c[i] = tmp;
}
}
int main(){
char *s = "antonio";
//printf("%zd\n", strlen(s));
reverse(s);
printf("%s\n", s);
return 0;
}
的问题是反向(字符* c),它采取了一个字符串广告相反,但我不明白它在哪里g错了。
你试图修改字符串文字。这是未定义的行为,通常会崩溃。 –
你没有使用你的编译器警告和/或注意它们。再次编译代码,并启用所有警告,并确保您了解编译器告诉您的所有内容。自动化工具可以在您需要寻求帮助之前为您提供很长的路要走! –
@KerrekSB我没有收到任何警告,我会看到如何启用我的编译器的所有警告。 – AR89