C语言单词长度

你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格;最后的‘.’不计算在内。
输入格式:
输入在一行中给出一行文本,以‘.’结束。
提示:用scanf("%c",...);来读入一个字符,直到读到‘.’为止。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It's great to see you here.

输出样例:
4 5 2 3 3 4

怎么分配空间保存一个不确定长度的文本?

因为不太清楚你想要问什么所以姑且解了一下这个题目。

这个题目应该是不需要将整个字符串保存下来的,就像楼上的回答说的,每次读入一个字符,先从第一个不是空格的字符开始读,如果不是空格,长度就+1,如果是空格且长度(length)不为0,就输出并且长度清零,如果是空格且长度为0就继续做。

关于你的疑问在C语言中一般是通过声明足够大的空间来解决长度不确定的问题。当然也有通过链表等等方式来保存。链表的方法可以不需要事先声明足够大的空间而是来一个字符就通过malloc申请一个字符的空间存放进去。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-03
其实你可以先创建一个足够大的字符数组
例如
char data[1000000];
然后再定义的计数器
int datacount=0;
最后再输入时
scanf("%c",data[datacount++]);
这样子就可以了
最后datacount就是这一行文本的长度
第2个回答  2015-05-03
这里既然让你用%c一个个地读入字符,你就可以不用把整个文本全部存储起来,可以一边读入字符一边处理,读入非空格当前单词长度就加1,读入空格就清0,下一个非空格就是新单词的开始了
相似回答