输入并逐行输出

来源:互联网 发布:手机视频点播软件 编辑:程序博客网 时间:2024/06/05 19:01

Q: 从标准输入读取几行输入,每行输入都要打印到标准输出上,前面需加上行号,输入行长度没有限制。


/*从标准输入复制到标准输出,并对输出行标号*/#include<stdio.h>#include<stdlib.h>int main(){    int ch;    int line;          int at_beginning; /*行起始位置*/    line = 0;    at_beginning = 1;    /*读取字符并逐个处理他们*/    while((ch = getchar()) != EOF)    {        /*如果我们位于一行的起始位置,打印行号*/        if(at_beginning == 1)        {            at_beginning = 0;            line += 1;            printf("%d",line);        }        /*打印字符,并对行尾进行检查*/        putchar(ch);        if(ch == '\n')            at_beginning = 1;    }    return EXIT_SUCCESS;}

通过从输入中逐字进行读取而不是逐行读取,可以避免行长度限制。


补充:c++版

  代码如下:

#include<iostream>#include<string>using namespace std;int main(){    int i=0;    string line;    while(getline(cin, line))      /*getline整行文本读取*/        cout<< ++i<< line            << endl;    return 0;}

如果写成:while(cin >> line) 则就是读取一组string对象,然后在标准输出上逐行输出。