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