字符串中统计单词个数

下面是一个完全正确的代码,思路是直接找单词数。
如果说当前不遇到空格,那么意味着现在程序处于读单词的过程,如果说这个过程是头一次发生,那么处于读单词过程的次数加1。
如果说遇到空格,意味着现在程序处于读空格这个过程中,如果说上一个过程是读单词,那么flag=0表示目前不处于读单词状态。

#include<stdio.h>
 
int main(void)
{
    int flag = 0;  //flag=0表示目前没有接触到单词字符 
    char ch;
    int word_count = 0;
    
    while(scanf("%c",&ch)&&ch!='\n')   
    {
        if(ch!=' '&&flag==0)    
        {
            word_count++;  
            flag = 1;//接触到单词字符后,停止记录单词数 
        }
        if(ch==' '&&flag==1)
        {
            flag = 0;
        }
    }
    printf("%d", word_count);
 
    return 0;



思路不同,导致flag的含义不同,可见思路决定了最终的结果。

下面这个是更简单的一种思路,所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔。

就两种情况,单词后面跟了一个空格,或者单词后面没有字符了。
根据这两种情况判断单词个数。当gets()函数不能用时可能多半是后面的代码错了,当然也可以使用 fgets()格式为

char *fgets(char *str, int n, FILE *stream);输入流的话直接用stdin,即
fgets(字符串, 大小, stdin);

#include <stdio.h>

int main() {
    char a[1000];//初始化数组
    gets(a);//赋值
    int n,num=0,i;
    for (i=0;a[i] != '\0';i++);//获取数组个数
    n=i;
    for (i=0;i<n;i++){
        if (a[i] != ' ' && a[i+1] == ' ') num++;
        if (a[i] != ' ' && a[i+1] == '\0') num++;
    } 
    printf("%d\n",num);
    return 0;
}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值