C语言统计字符串内单词个数,并把每个单词字母翻转
rt,要求是输入一段英文(有标点),最后统计这句话一共多少个单词并输出数字,第二行输出翻转后的单词(没有标点,每个单词后带空格,句子顺序不变)。我的代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
int i,j,stx;
char a[500];
while(gets(a))
{
int len= strlen(a);
int sum=0;
for(i=0;i<len;i++)
{
if(a[i]==' ')
sum=sum+1;
}
printf("%d\n",sum+1);
int flag=0;
a[len]=' ';
char b[500];
int k=0;
stx=0;
while(stx<len)
{
for(i=stx;i<=len;i++)
{
if((a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z'))
{
b[k]=a[i];
k++;
continue;
}
if(a[i]==' ')
{
flag++;
break;
}
if(a[i]=='.'||a[i]=='?'||a[i]==','||a[i]=='!')
{
flag++;
continue;
}
}
for(int r=k-1;r>=stx-1;r--)
{
printf("%c",b[r]);
}
stx=stx+flag+k;
}
printf("\n");
}
return 0;
}
现在的问题是我输出的英语单词只有前两个,比如:
I love China.
输出 i evol 就没了。每个标点符号后面也空一个格方便统计单词,求解答。