2
我的问题是,该代码只适用于很小的输入字符串C:大字符串输入 - >分段错误
代码应该检查输入是否是Palindrom。这里面有两个选择,我实现了他们额外的功能(这个错误也appers,当我评论的功能了)
例如: 输入“奥托” - 是好的 “reliefpfeiler” - 是好的 “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx “ - >段错误
int main(int argc, char **argv)
{
char* str;
int erg;
int c;
char stroriginall[50];
fgets(str,50,stdin);
str[strlen(str)-1]='\0';
if(strlen(str)>40)
{
printf("%s: Error, input must <=40!",argv[0]);
return 1;
}
strcpy(stroriginall,str);
while ((c=getopt(argc, argv, "si")) != -1)
{
switch(c)
{
case 's':
str=removeSpaces(str);
break;
case 'i':
toLowerCase(str);
break;
}
}
erg=checkPalindrom(str);
if(erg==0)
{
printf("%s ist ein Palindrom\n",stroriginall);
}
else
{
printf("%s ist kein Palindrom\n",stroriginall);
}
return 0;
}
我希望有人能帮助我:)
谢谢 - 但我不明白为什么它使用小输入? – nikmaster
@ user1030620我很惊讶它在所有的工作,行为是完全* undefined *。 – AusCBloke