【发布时间】:2020-01-29 02:30:33
【问题描述】:
我是 C 的初学者,本质上,我试图逐个字符地读取文件,并将字符回显到输出,而且在每一行的开头,包括行号。我已经设法弄清楚如何计算行数,但是当我尝试插入行号时,我不知道如何让它插入下一行,而不是在遇到换行符时立即插入。
这是我的代码:
int main() {
int c, nl;
nl = 1;
FILE *file;
file = fopen("testWords.in", "r");
if (file) {
printf("%d. ", nl);
while((c = getc(file)) != EOF) {
if (c == '\n') {
++nl;
printf("%d", nl);
}
printf("%c", c);
}
fclose(file);
}
}
这是输出:
1. The Three Laws of Robotics:2
First: A robot may not injure a human being or, through inaction,3
allow a human being to come to harm;4
Second: A robot must obey the orders given it by human beings5
except where such orders would conflict with the First Law;6
Third: A robot must protect its own existence as long as7
such protection does not conflict with the First or Second Law;8
The Zeroth Law: A robot may not harm humanity, or, by inaction,9
allow humanity to come to harm.10
-- Isaac Asimov, I, Robot11
【问题讨论】:
-
提示:在数字之前打印换行符。你这么近!这是一个操作顺序。
-
@tadman 天啊,真不敢相信它这么简单。非常感谢!知道如何防止最后的第 11 行打印吗?
-
建议
putchar(c);而不是printf ("%c", c);(不需要转换:)编译器会为你优化这个,但明确表明对基本工具的理解。