gpt4 book ai didi

c - 使用 K&R C 编程语言书开始使用 C

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

出于 self 提升/开阔视野的原因,我决定使用 K&R“C 编程语言书籍”学习 C 的一些基础知识。

我一直在跟随练习,使用 Bloodhsed DEV C++ 4.9.9.2 作为我的 IDE。

我遇到了以下练习 - 计算输入中的字符数:

main()
{
double nc;
for(nc = 0; getchar() != EOF; ++nc);
printf("&.0f\n", nc);
}

这段代码符合要求并且运行没有错误。

但是,当我在控制台窗口中输入一个字符串并按回车键时,我没有得到任何输出,即显示字符串中有多少字符的数字。例如,如果我在控制台窗口中键入“test”,我希望 4 显示为输出。

我确定问题出在我设置 IDE 的方式上?还是我遗漏了一些更基本的东西?

非常感谢任何帮助。拥有 VB 背景,我对学习 C 等不同的语言并掌握指针感到非常兴奋!

编辑

这里也给出了我的问题的相关答案,非常有帮助: Why doesn't getchar() recognise return as EOF on the console?

最佳答案

在标准输入流关闭之前你不会得到任何输出(在 Windows 下使用 CTRLZCTRL D 在各种 UNIX 风格下)。

换行符只是另一个字符。

您可能还想获得更新的 C 教程书籍。 main() 不再是 ISO C 的强制主要原型(prototype)之一,您应该使用以下之一:

int main(void) {}
int main(int argc, char *argv[]) {}

最重要的是,您显示的代码不会编译,因为您没有终止printf 格式字符串。使用:

printf("%.0f\n", nc);

代替:

printf("&.0f\n, nc);

为什么要使用 double 也是一个谜,除非你想处理非常大的文件 - 我会使用 intlong 为此。

这是我要使用的代码:

#include <stdio.h>
int main (void) {
long nc;
for (nc = 0; getchar() != EOF; ++nc)
;
printf("%ld\n", nc);
return 0;
}

产生以下 session :

pax> countchars
Hello there.<ENTER>
My name is Bob.<ENTER>
<CTRL-D>
29

pax>

关于c - 使用 K&R C 编程语言书开始使用 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1935484/

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