统计一个字符串中的单词的个数,并打印各个单词

[cpp]   view plain copy 在CODE上查看代码片 派生到我的代码片
  1. /*测试数据:Shen zhen is a beautiful city!*/  
  2. /*运行结果:Word:6 
  3. Shen 
  4. zhen 
  5. is 
  6. a 
  7. beautiful 
  8. city!*/  
  9. #include<stdio.h>  
  10. #define SIZE 1000  
  11.   
  12. void wordCount(char *str)  
  13. {  
  14.     int count = 0, flag = 0;  
  15.     char *p = str;  
  16.     while (*p != '\0'){  
  17.         while (*p == 32){  
  18.             if (*(p + 1) == 0){/*当空白的下一位是结束符时,意味着最后一个单词后面是空格,那么就做一个标记,让下面的程序看到*/  
  19.                 flag = 1;  
  20.             }  
  21.             ++p;  
  22.         }  
  23.         while (*p != 0 && *p != 32){  
  24.             ++p;  
  25.         }  
  26.         if (!flag){/*根据上面的标记,知道这个时候不是单词结束了,而是句子要结束了,不再统计单词个数了*/  
  27.             ++count;  
  28.         }  
  29.     }  
  30.     printf("Word:%d\n", count);  
  31.     p = str;  
  32.     flag = 0;  
  33.     while (*p != 0){  
  34.         while (*p == 32){  
  35.             if (*(p + 1) == 0){/*和上面的一样*/  
  36.                 flag = 1;  
  37.             }  
  38.             ++p;  
  39.         }  
  40.         while (*p != 0 && *p != 32){  
  41.             putchar(*p);  
  42.             ++p;  
  43.         }  
  44.         if (!flag){  
  45.             putchar(10);  
  46.         }  
  47.     }  
  48.   
  49. }  
  50.   
  51. int main()  
  52. {  
  53.     char str[SIZE];  
  54.     printf("Please enter a string :\n");  
  55.     gets(str);  
  56.     wordCount(str);  
  57.     return 0;  
  58. }  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值