gpt4 book ai didi

arrays - 没有收到错误但没有看到输出

转载 作者:行者123 更新时间:2023-12-03 07:38:04 24 4
gpt4 key购买 nike

我目前正在从The C Programming语言的模拟副本中学习C。虽然它有助于理解编程的基本方面,但在理解如何直接从教科书中的示例复制的程序如何在终端中不产生输出,也不明确地请求输入方面却有困难。我认为我对所发生的事情有很大的洞察力。
目前我在数组的第1.6节。这是示例代码:

#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[i]);
printf(", white space = %d, other = %d\n", nwhite, nother);

}
在文本中,因为它是C89,所以我没有在 int之前包含 main()。它不会吐出任何错误,但是在编译之后也不会吐出其他任何东西。我想念什么?

最佳答案

我只是测试了代码,它确实起作用了。
我要确保您正在运行编译的文件。编译以.c结尾的代码文件后,将有一个可执行文件必须运行才能使已编译的程序实际执行。
如果您正在运行编译的文件,那么我认为您遇到的问题是该程序一直在尝试获取字符,直到读取EOF(文件末尾)为止。 “while((c = getchar())!= EOF)”行完成了两件事。首先,它从标准输入中获取一个字符,并将其存储在变量“c”中。其次,仅当变量“c”包含EOF时,它才退出循环。如果程序从不从标准输入中读取EOF,则while循环下面的打印语句将永远不会到达。如果您的输入来自终端(这是标准输入的默认设置),则您需要通过按Ctrl-D(如果使用Linux或Unix)或Ctrl-Z(如果您输入)来手动使程序读取EOF。正在使用Windows)。
我注意到您说该程序不是“明确要求输入”。该程序在调用“getchar()”之前没有任何打印语句。当该程序运行时,它不会给出太多预期输入的指示,因为没有代码将文本打印到终端以请求输入。运行代码后,尝试仅键入输入并在每次输入后按“输入”键。

关于arrays - 没有收到错误但没有看到输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65582377/

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