【问题标题】:Counting program counting the new lines as characters [duplicate]计数程序将新行计数为字符[重复]
【发布时间】:2019-08-14 12:10:12
【问题描述】:

我正在使用 C 编程语言学习 C,但是,在计算字符的程序中存在一个问题,即它将新行计为字符。 如何让我的程序不计算 \n?

#include <stdio.h>

/* count characters in input; 1st version */
int main()
{
    int nc;
    nc = 0;
    while (getchar() != EOF){
        ++nc;
    }
    printf("%d\n", nc);
}

【问题讨论】:

  • 这取决于你对角色的定义。从技术上讲,换行符是一个字符,所以从技术上讲,您的程序没有做错任何事情。

标签: c counting


【解决方案1】:
int main()
{
    int nc;
    int c;
    nc = 0;
    while ((c = getchar()) != EOF){
        if(c != '\n' && c != '\r') ++nc;
    }
    printf("%d\n", nc);
}

在 Windows 中,'\r' 和 '\n' 都用于新行。

【讨论】:

  • 不是我的反对票,因为我的反对票已用完,但您无法从 Windows 中的文本流中获取 \r。如果你这样做了,那么序列将是\r\n
  • 它是否改变了代码中的任何内容。
  • @P__J__ 它不会更改代码中的任何内容,但会误导想要解决可能需要知道正确序列 CRLF \r\n 的类似问题的读者。
  • @ChristianHujer 你DV我了吗?
  • @P__J__ 不,我没有。在我第一次看到它之前,它被否决了。
猜你喜欢
  • 2012-10-08
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多