如何在打印到控制台的每一行的开头打印,打印文件的行号

时间:2015-10-13 22:33:23

标签: c

我的出局应该是这个

1)你好......
2)编程1 ...
3)学生!
4)欢迎使用File I / O!

我已经做了所有事情,除了我无法弄清楚如何打印每行的数字?

到目前为止,我得到了

#include <stido.h>

int main(int argc,char* argv[])
{

    char string[200];
    FILE* file = fopen("file2.txt","r");
    while(fscanf(file, "%c", string) ==1)
    {
        printf("%c", *string);
    }

    fclose(file);
    return 0;
}

2 个答案:

答案 0 :(得分:0)

int num = 1;
char line[200];
FILE* file = fopen("file2.txt","r");
while(fgets(line, 200, file))
{
    printf("%d) %s", num, line);
    num++;
}

答案 1 :(得分:0)

为了避免像char string[200]那样限制行长度,可以通过检查珍贵的char是否为换行符然后打印数字来简单地检测行的开头。无需保守计数,所以请使用宽类型。

#include <assert.h>
#include <stido.h>

int main(int argc,char* argv[]) {
    int previous = '\n';  
    int ch;
    unsigned long long line_count = 0;
    FILE* file = fopen("file2.txt","r");
    assert(file);
    while((ch = fgetc(file)) != EOF) {
      if (previous == '\n') {
        printf("%llu) ", ++line_count);
      }
      fputc(ch, stdout);
      previous = ch;
    }
    fclose(file);
    return 0;
}