【问题标题】:Counting characters via C book [duplicate]通过C书计算字符[重复]
【发布时间】:2016-03-04 06:46:14
【问题描述】:

我一直在尝试通过“BRIAN W KERNIGHAN & DENNIS M. RITCHIE 的 C 编程语言”学习一些 C 语言,但我有一个我无法理解的问题。

这是与输入字符计数相关的第 1.5 节(第 17 页)中的交易,这是我的代码:

#include <stdio.h>

int main()
{
    double nc;

    for (nc = 0; getchar() != EOF; ++nc);
    printf("%0.f\n", nc);
}

这部分:

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

应该打印实际的字符计数器,对吗?问题是它完全没有给我任何东西。我一直在通过代码块和终端通过执行“cc code.c”来尝试它,它所做的只是等待我输入和输入,仅此而已。

我错过了什么吗?

提前致谢,

阿努比斯

【问题讨论】:

  • 我只是放随机字符。文本,单个字符,单个整数,对我没有任何作用。我显然做错了什么
  • 你确定格式不是%.0f,请求小数点后0位吗?此外,运行cc code.c 将创建一个程序a.out,您需要运行它:例如./a.out &lt; code.c,以使其计入自己的源代码。
  • 从标准输入获取字符串的代码运行良好——一定是你输入错误的方式
  • 请注意,通过那本书,您只是 1989 年版的 C 语言。您可能想考虑学习 2011 版本 - 为什么要学习 27 年前的技术和过时的标准?
  • @Lundin 我什至不知道这本书有 2011 年的版本。除非,你在谈论其他书......

标签: c linux character codeblocks counting


【解决方案1】:

如果你只输入随机文本输入,你就会被困在这里getchar() != EOF

程序等待EOF - End Of File

我将你的代码复制到a.c并使用gcc a.c -o a.out编译它

如果运行./a.out,我会得到你描述的行为,直到我在终端中点击Ctrl+D,它对应于EOF

程序将在收到EOF 后打印收到的字符数。

使用代码的另一种方法是将另一个文件通过管道传递给它。

创建一个名为blaha.txt的虚拟文件并在其中写入一些内容。 然后,您可以像这样将其通过管道传输到程序: a.out &lt; blaha.txt

【讨论】:

    【解决方案2】:

    您的程序等待输入并使用它,直到到达文件末尾。您可以通过在终端输入特殊字符来表示文件结束,例如在 Windows 上输入 control-Z 后跟 enter,在 Linux 和 MacOS 上输入 control-D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-24
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      相关资源
      最近更新 更多