gpt4 book ai didi

c - 没有显示任何内容 C 初学者

转载 作者:行者123 更新时间:2023-11-30 15:47:00 26 4
gpt4 key购买 nike

我正在跟着一本关于 C 的书来学习它,并且我正在编写书中的所有代码来遵循,最新的与数组相关的代码应该说明有多少空格,制表符等。但是当我执行它时,什么也没有显示,它只是空白,因为我可以输入一些内容然后按 Enter 键,但什么也没有发生,它是否应该告诉我每件事有多少?

我太新了,无法理解这个程序是否实际上应该输出任何内容,所以我想我应该将其发布在这里并获得意见,它编译并运行良好,没有错误,但是这本书有点提到它输出东西,但是当我运行它并输入内容时什么也没有发生,只能永远继续输入内容。

这是代码

 #include <stdio.h>

int main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
printf("digits =");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[1]);
printf(", white space = %d, other = %d\n", nwhite, nother);
}

最佳答案

应用程序接受输入一些值,然后计算数字 (0-9) 和空格的数量。中断循环的组合键不是ENTER而是EOF,在Linux中是CRTL-D,在WINDOWS中是CTRL-Z

然后,在您的应用程序中存在一个错误:

  for (i = 0; i < 10; ++i)
printf(" %d", ndigit[1]);

为了显示位数,应该是:

for (i = 0; i < 10; ++i)
printf(" %d", ndigit[i]);

不幸的是,在使用 scanf()、getchar()、fgets() 等时获取交互式输入是相当有问题的。这就是为什么大多数人通常编写自己的自定义函数,通常从 stdin 获取整行,然后根据它进行解析以满足他们的需求。但是,如果您想使用 ENTER 来停止循环,您可以按如下方式修改代码,但您将失去计算输入中新行数的可能性。

#include <stdio.h>

int main(void)
{
int c, i, nwhite, nother;
int ndigit[10];

nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;

while ((c = getchar()) != '\n')
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
printf("digits =");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[i]);
printf(", white space = %d, other = %d\n", nwhite, nother);

return 0;

}

这应该按您的预期工作。但是,您应该考虑编写一个更好的输入函数,网上有几个有趣的解决方案。

编辑

main() 必须返回 int。不是 void、不是 bool、不是 float。国际。只是int,除了int,什么都没有,只是int。有些编译器接受 void main(),但这是非标准的,不应使用。

在这里查看一些示例:http://www.parashift.com/c++-faq-lite/main-returns-int.html

关于c - 没有显示任何内容 C 初学者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17828922/

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