Печать числовых строк в C

Я пытаюсь прочитать файл, а затем распечатать с ним числовые строки. Но я не знаю, как я могу одновременно печатать lorem ipsum. Потому что я мало знаю о функциях печати в C.

Вот мой код:

#include <stdio.h>
#include <stdlib.h>
main(){

int c;
int b=1;
//int a[5000]; Shall I use this or any ideas without them?

FILE *xfile;
xfile = fopen("loremipsum.txt", "r"); 

while((c=getc(xfile)) != EOF){
if(c == '\n'){
printf("%d\n", b); /*STUCK IN THERE... HOW TO PRINT LOREM IPSUM WITH NUMBER LINES?*/
//putchar(a);   
b++;
}
}

}

Мой лорем ипсум:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Donec vitae quam non risus consectetur aliquet sed rhoncus purus.
Fusce vitae lorem a dui elementum condimentum id id odio.
Quisque eu felis eu diam facilisis mollis sit amet id augue.


Duis lacinia velit et lorem ullamcorper iaculis.
Duis malesuada lacus quis quam congue nec euismod ante condimentum.
Donec dignissim augue vitae nulla dapibus vehicula.

Что я хочу:

1. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
2. Donec vitae quam non risus consectetur aliquet sed rhoncus purus.
3. Fusce vitae lorem a dui elementum condimentum id id odio.
4. Quisque eu felis eu diam facilisis mollis sit amet id augue.


5. Duis lacinia velit et lorem ullamcorper iaculis.
6. Duis malesuada lacus quis quam congue nec euismod ante condimentum.
7. Donec dignissim augue vitae nulla dapibus vehicula.

person Community    schedule 03.03.2013    source источник


Ответы (2)


Как насчет использования вместо этого fgets для получения целых строк вместо чтения по одному символу за раз?

char input[256];
int line = 1;

while (fgets(input, sizeof(input), xfile) != NULL)
{
    printf("%2d. %s", line++, input);
}
person Some programmer dude    schedule 03.03.2013
comment
Просто убедитесь, что строки в файле не длиннее входных данных, иначе вы можете получить неправильные результаты. - person ; 03.03.2013

У вас есть хороший метод, хотя может быть полезно сохранить последний символ в переменной.

int c;
int b = 1;
int prec = '\n';

while ((c = getc (xfile)) != EOF) {
        if (prec == '\n')
                printf ("%d. ", b++);

        putchar (c);
        prec = c;
}
person md5    schedule 03.03.2013
comment
Это действительно хороший ответ, поскольку он обрабатывает файлы, оканчивающиеся на \n. - person cnicutar; 03.03.2013
comment
@cnicutar .. Для OP я хочу напечатать последнее \n, чтобы он узнал о разнице. Ответ Кириленко хорош.. но и ты ответил хорошо, я проголосовал за тебя. - person Grijesh Chauhan; 03.03.2013
comment
@GrjeshChauhan Спасибо, я ценю это, но я уже был ограничен в течение дня, и мой ответ на самом деле ничего не добавил к ветке. - person cnicutar; 03.03.2013