2013-03-03 2 views
1

Я пытаюсь прочитать файл, затем распечатать с ними числовые строки. Но я не знаю, как я могу напечатать 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. 

ответ

5

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

char input[256]; 
int line = 1; 

while (fgets(input, sizeof(input), xfile) != NULL) 
{ 
    printf("%2d. %s", line++, input); 
} 
+5

Просто убедитесь, что строки в файле не длиннее ввода или вы можете получить неправильные результаты. – 2013-03-03 17:54:17

3

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

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

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

     putchar (c); 
     prec = c; 
} 
+0

Это действительно хороший ответ, поскольку файлы обработчика заканчиваются на '\ n'. – cnicutar

+0

@cnicutar ..For OP Я хочу напечатать последний '\ n', чтобы он узнал о различии. Ответ Кириленко хороший, но ты ответишь хорошо, я тоже проголосовал за тебя. –

+1

@GrijeshChauhan Спасибо, я ценю это, но я уже был ограничен в течение дня, и мой ответ действительно ничего не добавил в тему. – cnicutar

Смежные вопросы