#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 ++
答案 0 :(得分:1)
您需要通过为其分配空间来初始化str
:
char *str = (char *)malloc(SIZE);
否则它将调用未定义的行为。另外,声明l
类型的size_t
,因为strlen
返回的类型为size_t
,并在%d
中将%zu
更改为printf