*p -=32 的条件应该是 flag==1 并且 *p >='a',而且flag的初始值应该是1,否则第一个单词就没法更改了。
flag=1的条件应该是 *p == ' '
代码修改如下:
#include <stdio.h>
int main()
{
int flag = 1; //这里初始化为1
char str[80],*p = str;
printf("Input a line char:");
gets(str);
while(*p != '\0')
{
if (*p>='a' && flag==1)
{
*p -= 32;
flag = 0;
}else if (*p == ' ')
{
flag = 1;
}
p++;
}
puts(str);
return 0;
}
#include<stdio.h>
int main()
{
char str[200],*p;
gets(str);
p=str;
if(*p>='a'&&*p<='z') *p=*p-32;
while(*++p!='\0')
{
if(*(p-1)==' ')
{
if(*p>='a'&&*p<='z') *p-=32;
}
else if(*p>='A'&&*p<='Z') *p+=32;
}
puts(str);
return 0;
}