[英]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.