【发布时间】:2014-06-21 16:42:34
【问题描述】:
#include<cstdio>
#include<cstring>
#include<cstdlib>
int main(){
int t;
scanf("%d",&t);
while(t--){
char *str;
scanf("%s",str);
int l,n,nop=1;
l=strlen(str);
printf("Length %d",l); //causing segmentation fault
if(l%2==0)n=l/2;
else n=(l-1)/2;
for(int i=0;i<n;i++)nop=nop+abs(str[i]-str[l-1-i]);
printf("%d\n",nop);
}
return 0;
}
打印字符串长度时出现错误。如果我删除该行代码可以工作,但输出不正确。 该代码适用于 DevC++
【问题讨论】:
-
char *str; scanf("%s",str);可爱。指针不会自动指向可以存储无限大小字符串的内存。 -
你在哪里初始化
str? -
@chris 的意思是告诉你你在 str 之前缺少一个 &,这会导致内存损坏。
-
@bmargulies,嗯,不,因为
%s期望char *,而不是char **,但是是的,我编辑了更多信息。 -
是的,这是故意的。
标签: c++ segmentation-fault strlen