如何解决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 举报,一经查实,本站将立刻删除。