簡體   English   中英

C 代碼不會用換行符打印整個段落

[英]C code doesn't print whole paragraph with newlines

這是我的 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM