Отпечатване на числови редове в 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:

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
@GrijeshChauhan Благодаря, оценявам го, но вече бях ограничен за деня и отговорът ми всъщност не добави нищо към темата. - person cnicutar; 03.03.2013