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

내가 여기

C.

의 기능을 인쇄에 대해 많이 알고하지 않기 때문에 내 코드입니다 한 번에 한 문자 씩 읽는 대신 전체 줄을 얻기 위해 fgets을 사용하는 것은 어떨까요?

char input[256]; 
int line = 1; 

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

파일의 줄이 입력보다 길거나 잘못된 결과가 나올 수 있는지 확인하십시오. –

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 .. OP의 경우 마지막으로 \ n을 인쇄하여 차이점을 알게됩니다. Kirilenko 대답은 좋았지 만 대답은 너에게 너무 좋았다. –

+1

@GrijeshChauhan 고맙습니다, 고맙습니다.하지만 이미 그날은 모자를 썼고 대답은 스레드에 아무 것도 추가하지 않았습니다. – cnicutar