0
我试图在下面的程序中发现错误。这个程序有什么问题? (字符串相关)
如果我输入“This is a test”,则输出显示“This is A”。我试图找出为什么“测试”丢失。
请帮我理解这个问题。提前致谢。
#include<stdio.h>
#include<string.h>
int main()
{
char str[1000], word[100];
int i, j, length, is_word_started;
gets(str);
length=strlen(str);
is_word_started=0;
for(i=0, j=0; i<length; i++)
{
if(str[i]>='a' && str[i]<='z')
{
if(is_word_started==0)
{
is_word_started=1;
word[j]='A'+str[i]-'a';
j++;
}
else
{
word[j]=str[i];
j++;
}
}
else if(str[i]>='A' && str[i]<='Z' || str[i]>='0' && str[i]<='9')
{
if(is_word_started==0)
{
is_word_started=1;
}
word[j]=str[i];
j++;
}
else
{
if(is_word_started==1)
{
is_word_started=0;
word[j]='\0';
printf("%s\n", word);
j=0;
}
}
}
return 0;
}
@usr你应该解释[为什么获取函数如此危险以至于不应该使用?](http://stackoverflow.com/q/1694036/613130) – xanatos
@us令人遗憾的是,“经典”C通常不会“包括“如何编写安全可靠的C代码”一章:-) – xanatos
编译时,总是启用所有警告,然后修复这些警告(不要隐藏它们)(对于'gcc',至少使用:' -Wall -Wextra -pedantic'我也使用:'-Wconversion -std = gnu11') – user3629249