标题:请教首尾可能为空时查询单词的问题
取消只看楼主
y529879803
Rank: 1
等 级:等待验证会员
帖 子:65
专家分:7
注 册:2016-11-10
 问题点数:0 回复次数:2 
请教首尾可能为空时查询单词的问题

我希望可以做出一个输入字符串统计单词数量的程序。。。但是问题好多啊。这个程序正常使用没有问题。。。即使单词之间空格数不是1都行。但是问题在于万一有人就只输入空格键或者直接回车键出的也是一怎么办?而且末尾字符不能是空格不然会结果会加一,我希望不管首尾是否为空格都能正确计算出单词的数量。但目前做的其实只能统计不连续的空格数量并输出。求指导!
#include<stdio.h>
#include<string.h>
#define A 888
main()
{
    int a,b,c=1,d,e=0,f,g;
char one[A];
gets (one);
a=strlen(one);
for (b=1;b<a;
b++){
if (one[b]==' '&&one[b-1]!=' '){
c++;}}
printf("%d",c);
}
还有个问题是我试了下当末尾字符为空格时让结果c-1,结果完全无效。。。我的写法是这样的,请问为什么不起作用?
#include<stdio.h>
#include<string.h>
#define A 888
main()
{
    int a,b,c=1,d,e=0,f,g;
char one[A];
gets (one);
a=strlen(one);
for (b=1;b<a;
b++){
if (one[b]==' '&&one[b-1]!=' '){
c++;}}
if (one[a]==' '){c=c-1;}
printf("%d",c);
}

[此贴子已经被作者于2016-11-13 19:23编辑过]

搜索更多相关主题的帖子: include 字符串 单词 而且 
2016-11-13 19:04
y529879803
Rank: 1
等 级:等待验证会员
帖 子:65
专家分:7
注 册:2016-11-10
得分:0 
回复 2楼 九转星河
dalao,按照您的纠正确实回避了字符串末位为空格时统计数量会多一的问题,但是我后来加了一句
if (one[0]=='\0'){c=c-1;}希望解决直接回车显示结果是1的问题。结果没有用。。。if (a==0){c=c-1;}也一样,请问这又是为什么呢?直接回车时one[0]应该就是'\0'吧。
#include<stdio.h>
#include<string.h>
#define A 888
main()
{
    int a,b,c=1,d,e=0,f,g;
char one[A];
gets (one);
a=strlen(one);
for (b=1;b<a;
b++){
if (one[b]==' '&&one[b-1]!=' '){
c++;}}
if (one[a-1]==' '){c=c-1;}
if (one[0]=='\0'){c=c-1;}
printf("%d",c);
}
这应该就是这个统计单词数量的程序最后的问题了,有点兴奋啊

[此贴子已经被作者于2016-11-13 23:59编辑过]


碧蓝航线真好玩
2016-11-13 23:58
y529879803
Rank: 1
等 级:等待验证会员
帖 子:65
专家分:7
注 册:2016-11-10
得分:0 
回复 4楼 九转星河
是吗,会不会和我用的编译器有关系??我不是用vc6.0用的C4Droid......感谢dalao!

碧蓝航线真好玩
2016-11-14 06:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-471089-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.159723 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved