gpt4 book ai didi

C 程序计算卡在嵌套 while 循环中的文本中的 n 个字母单词的数量

转载 作者:行者123 更新时间:2023-11-30 16:58:38 25 4
gpt4 key购买 nike

我在离开学校几年后重新开始编码,我一直在尝试用 C 语言编写一个程序来计算文本中有多少个 n 字母单词,并将它们存储到一个长度为 n 的数组中然后打印它们。为了简单起见,我假设 n 是 b/w 1 和 10,并且每个单词都由一个空格分隔。

这是代码,但是,似乎我的程序永远不会脱离内部 while 循环,因此屏幕上不会打印任何内容。我尝试在该循环末尾打印一些内容来测试它,由于某种原因,程序将其打印与字符数一样多的次数(包括空格,内部 while 条件应该捕获并退出)。我在这里忽略了什么吗?

main()
{
int c, i, j, counter;
counter = 0;
int wlength [10];
for (i=0; i<10; ++i) //initialize array
wlength[i]=0;
while((c=getchar())!=EOF){ // keep taking input until end of file
while (c!=' '){ //keep counting until you reach the end of the word
++counter;
c=getchar();
}
wlength [counter-1]++; //increment the counter for that word length
counter=0 ; //reset the counter for the next word
}
for (j=0;j<10;++j) //print the array
printf("%d ", wlength[j]);

最佳答案

您有两个循环读取标准输入,只有一个循环检查 EOF。因此,如果文件末尾之前没有完全空格,您的程序会读取该文件并卡住。最好只使用一个循环,用 if - else 语句替换另一个循环:

Pseudo-code :
while ( getchar and !EOF )
{
if ( char isn't a space )
{
increment counter
} else {
increment value for given length
set first counter to 0
}
}

您还应该检查您是否在数组的边界内...存在“exptentially”之类的词;-)

关于C 程序计算卡在嵌套 while 循环中的文本中的 n 个字母单词的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com