你的c=getchar() 没带括号,=的优先级没getchar() != '\n' 高,所以读入的都是乱码。
然后循环结束要加个’\0'因为getchar的读入不会自己加,于是你的for循环就会出问题。
写一串不如直接一个gets(str)搞定。
int main() {
int i = 0, c;
int word;
char str[200];
word = 1;
//gets(str);
while (((c = getchar()) != '\n')) {
str[i++] = c;
}
str[i] = '\0';
for (i = 0; str[i] != '\0'; i++) {
if (word == 1) {
if ('a' <= str[i] <= 'z') {
str[i] = str[i] - 32;
printf("%c", str[i]);
}
}
if (str[i] == ' ')
word = 1;
else
word = 0;
}
printf("\n");
}
int main ()
{
int i;
int word;
char str[200];
while(gets(str)!=NULL)
{
word=0;
for(i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
word=0;
}
else if(word==0)
{
word=1;
if(str[i]>='a'&&str[i]<='z')
{str[i]=str[i]-32;
}
printf("%c",str[i]);
}
}
printf("\n");
}
return 0;
}