【发布时间】:2021-05-09 05:57:44
【问题描述】:
我正在开发一个 C 程序,它接收输入的文本行,并通过每行仅打印 40 个字符来返回它。 到目前为止,我有这个代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
char input = getchar();
int numChar;
int total;
while ((input != EOF) && (input != '\n')) {
++numChar;
if (numChar > 40) {
printf("\n");
++total;
numChar = 0;
}
putchar(input);
input = getchar();
}
return EXIT_SUCCESS;
}
刚刚用我的新草稿更新了我的帖子。对于此尝试,我尝试在每个输入时打印每个字符,但如果字符数超过 40,则创建一个新行。但是,我没有得到预期的输出。
【问题讨论】:
-
如果第 40 位之后的字符串被忽略:
returnInput[40] = 0; printf( "%s\n", returnInput ); -
int numChar;->int numChar = 0;和total相同。 -
input必须是int而不是char(因为EOF是一个不同于任何char的值)。 -
@psmears 在 EOF 为 -1 且 char 已签名的通用系统上,EOF 与 char 的值相同。它必须是
int因为 getchar 返回的 int 值超出了char的范围。 -
描述有点模糊,你的意思是每行输入最多打印40个字符吗?或者你想让它停在第一行?还是要将超过 40 个字符的行分成更小的块?
标签: c loops char getchar putchar