2013-03-03 50 views
1

我尝试读取文件,然后用它们打印数字行。但我不知道如何在同一时间打印lorem ipsum。因为我不知道在C在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存有:

 
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 2013-03-03 18:10:31

+0

@cnicutar ..对于OP我想打印最后一个'\ n',所以他来了解差异。基里连科的答案很不错..但你的回答也不错,我投了你的票。 – 2013-03-03 18:11:51

+1

@GrijeshChauhan谢谢,我很感激,但我已经封顶了一天,我的回答并没有真正添加任何东西到线程。 – cnicutar 2013-03-03 18:12:49