【发布时间】:2021-04-01 01:22:08
【问题描述】:
我需要编写一个程序,通过获取用户的输入来计算单词、句子和字母的数量。该程序运行良好,直到我给出的输入是多行的。如果输入长于终端窗口可以容纳的文本,则程序开始忽略所有句号/问号/感叹号。我不知道为什么,我需要一些帮助。如果文本可以放在终端窗口的一行中,则不会发生这种情况。我还打印了程序读取的每个字符,但这也忽略了所有句号/问号/感叹号。这些字符都没有被打印出来。为了澄清,一个句子只是句号/问号/感叹号的数量,单词数只是文本中的空格数加1。这是我的代码:
#include <stdio.h>
#include <ctype.h> //for the isalpha() function
#include <cs50.h> //for the get_string() function
int main(void)
{
int sentences = 0, letters = 0;
int words = 1;
char character;
string text = get_string("Enter Text: \n");
char x = 0;
while (text[x] != '\0')
{
character = text[x];
switch (character)
{
case ' ':
words++;
break;
case '.':
sentences++;
break;
case '?':
sentences++;
break;
case '!':
sentences++;
break;
default:
if (isalpha(character))
{
letters++;
}
}
x++;
}
printf("\n");
printf("WORDS: %d, LETTERS: %d, SENTENCES: %d\n", words, letters, sentences);
}
我对 c 比较陌生,但我有大约一年的 Python 经验。感谢您的宝贵时间。
【问题讨论】:
-
请显示准确的测试输入、预期结果和实际结果。
-
代码看起来不错,所以问题肯定出在其他地方。
-
请将
char x = 0;更改为int x = 0;,这样它就不会在长行中溢出。 -
注意你也可以使用
isspace()和ispunct()。 -
仅仅因为终端行在满时溢出到/继续下一行并不意味着您输入了多个“行”。