C语言统计单词个数
Q:输入一串字符串,输出其中有多少个单词。
Eg:Good Wishes
A:
#include stdio.h#include string.h#define SIZE 20int main()
{ char str[SIZE]={‘\0’}; int count=0;
printf(“plz input the string\n”);
gets(str);
puts(str); int length = strlen(str); for (int i=0;ilength;i++)
{
if(str[i]!=’ ‘)
{ count++; while(str[i]!=’ ‘str[i]!=’\0’)
{
i++;
}
}
}
printf(“%d\n”,count); return 0;
}
‘\0’和‘0’的区别:
在c语言中,它们都是字符,都用对应的ASCII码来存储。例如第一个ASCII码,0,对应字符为(Null),就是 ‘\0’,即空字符。我们在c语言中判断一个字符串是否结束的标志就是看是否遇到‘\0’,如果遇到‘\0’,则表示字符串结束。字符‘0’和数字0的区别:前者是字符常量,后者是整形常量,但是字符常量可以像整数一样在程序中参与相关运算。
扩展资料
字符串所有字符,如果当前字符不为空,单词数+1,再嵌套一个while循环,判断当前单词是否结束。
#include stdio.h
#include string.h
int count_words(char* s)
{
int len=strlen(s);
int count,i;
for(i=0;ilen;i++)
{
if(*(s+i)!=’ ‘){ // 如果当前代码不为空
count++; //单词数+1
while(*(s+i)!=’ ‘ ilen) //判断当前单词是否结束
i++;
}
}
return count;
}
int main()
{
char* a=”i love you”;
printf(“%d”,count_words(a));
}
c语言,统计文件里的单词数
#includestdio.h
#includectype.h
void main()
{
char ch;
int numberofword=0,wordStart=0;
FILE *fp1 = fopen(“test.txt”,”r”);
FILE *fp2 = fopen(“result.txt”, “w”);
if( fp1==NULL || fp2==NULL )
{
puts(“cannot open file!”);
return;
}
while( !foef(fp1) )
{
ch =fgetc(fp1);
if( isalpha(ch) wordStart==0 )
{
wordStart = 1;
}
else if( !isalpha(ch) wordStart==1 )
{
numberofword++;
wordStart = 0;
}
}
fprintf(fp2,”%d”,numberofword);
fclose(fp1);
fclose(fp2);
}
C语言统计该文本中 英语单词的个数 ?
给一个简单的例子:
#includestdio.h#define N 1000void main(){ char en[N][81]; int i,j,num=0,n,state; //num 用来统计单词的个数 //state 用来记录程序当前是否处于一个单词之中,初值为0,表示不在单词中,值为1,表示正处于在一个单词中
FILE *fp;
fp = fopen(“in.txt”, “r”);
int n =0;
while(!feof(fp)){ fgets(en[n++], N, fp); //输入英语短文 } for(i=0;in;i++){ state=0; //设每行的开始都是单词的开始 for(j=0;en[i][j]!=’\0′;j++){ if(en[i][j]==’ ‘){ state=0; //判断 en[i][j] 是否为空格字符 } else if(state==0){ state=1; num++; } } } printf(“The number of words is %d\n”,num);}
C语言求单词的个数
错误比较多,一一罗列一下:
1、判断相等用==,fun函数用if(flag=1)这句就用错了
2、for循环不加括号,值包含了第一个if判断的内容,而第二个if(s[i]==’
‘)这个就会在循环结束之后判断
3、循环中使用循环条件使用*s!=’\0’,这个s指针一直指向字符串的首地址,*s一直是首地址的值,所以会使的其变为死循环,修改为s[i]!=’\0′
4、判断是否为一个单词不能只用s[i]==’
‘来判断,如果两个单词直接有多个空格的话,就会多判断出单词数,所以修改为s[i]==’
‘flag==0
5、最后一个单词后面没有空格的话,该程序会将最后一个单词漏掉,所以循环结束之后需要再判断flag是否为0,为0则说明有一个单词没有统计上,加上。
6、代码书写规范就不说了。