原题:编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制。
此题要求输入的行没有限制,可以通过getchar()函数实现。由于getchar()每次只能读取一个字符,不能达到输出行号,再输出一行字符,则需要设置“开关”flag。当flag===1时输出一行字符,然后又令flag为0;当一行字符又输完了(即遇到'\n'时),又令flag为1。
代码如下:
#include <stdio.h> #include<stdlib.h> int main() { int ch = 0; int line = 1; int flag = 1; while ((ch = getchar()) != EOF) { if (flag == 1) { printf("%d ",line); line++; flag = 0; } if (ch == '\n')/*当一行字符输完时输出整个字符串*/ { flag = 1; } putchar(ch); } system("pause"); return 0; }