微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C代码不会用换行符打印整个段落

如何解决C代码不会用换行符打印整个段落

这是我的C代码

#include <stdio.h>

int main()
{
  int c = getchar();
  while (c != EOF) {
    if (c != '\n')
      putchar(c);
    else putchar(32);
    c = getchar();
    }
return 0;
}

我想通过将\n字符替换为空格来制作一个用换行符打印段落的程序。问题是,当我使用上面提供的代码时,它仅打印出最后一行。

例如,对于文本:

This is
my
text

打印的结果为text。 当我删除if(),else条件并仅离开putchar()而不尝试替换任何内容时,该段落将正确打印。

出什么问题了?

解决方法

您的输入文件包含CRLF换行符。用空格替换LF时,您需要忽略CR字符。否则,打印CR字符将返回到该行的开头并覆盖已打印的内容。

#include <stdio.h>

int main()
{
    int c;
    while ((c = getchar()) != EOF) {
        if (c == '\n') {
            // replace newline with space
            putchar(' ');
        } else if (c == '\r') {
            // ignore CR
        } else {
            putchar(c);
        }
    }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。