2010-08-05 3 views
0

데이터를 읽고 구조에 저장할 필요가있는 파일이 있습니다.C에서 마지막 줄을 제외한 파일을 읽는 방법은 무엇입니까?

10001 john 
10002 david 
10003 randy 
10/10/2010 15:50:55 Updated by : Name 

이제 위의 파일에 대해 내가 마지막 줄 (파일의 끝)을 제외하고 & '랜디' '10003'까지 '10001'& '존'에서 데이터를 읽을 필요가있다.

C에서 어떻게 수행할까요?

업데이트 : 마지막 줄은 동적입니다.

+1

Google을 검색하여 시간을 절약하십시오. 감사. –

+0

그래서 마지막 줄이 첫 줄 일 수 있습니다. 그럼 더 이상 문제 없습니다. – Wok

+0

Guillaume : 그리고 여기 stackoverflow.com은 프로그래밍 관련 질문이라고 생각했습니다. 내가 잘못? – manneorama

답변

0

줄 바꿈 EOF 마지막 줄을 버릴 때.

편집 :

while (fgets(line, length, file) && !feof(file)) 
{ 
    /* process the line */ 
} 
+0

마지막 줄을 버리는 방법을 알려줄 수 있습니다. – Guru

+1

내 말은이 사람이 얼마나 게으른가요? – Konrad

+2

'while (fgets (줄, 길이, 파일) &&! feof (파일)) {/ * 줄 처리 * /}' – adf88

0

어떤 파일이 마지막 라인을 가지고 있지 않은 경우 당신이 할 것인가? 아마도 어떤 종류의 루프에서 각 행을 읽고 저장하십시오.

저장하기 전에 "if"를 추가하여 해당 줄이 "파일 끝"과 일치하는지 확인할 수 있습니다.

일반적으로 이러한 종류의 문제가있을 경우 이해할 수있는 비트로 문제를 해결하십시오. 그런 다음 비트를 맞추십시오.

는 또한 파일이 이상한 입력에 탄력해야한다

10001 john 
10002 david 
Silly line in middle of file 
10003 randy 
End of the file 
10003 mr unexepected 

애플리케이션과 같은 경우에 당신이 무엇을해야하는지 고려하는 것이 좋습니다.

+0

또한 빈 줄을 고려하십시오. 특히 파일의 끝 부분을 고려하십시오. – adf88

0
char line[81]; 
FILE *f=fopen("file","rt"); 

while(fgets(line,sizeof line,f)) 
{ 
int tag1; 
char tag2[81]; 
if(2==sscanf(line,"%d%80s",&tag1,tag2)) 
{ 
/* do anything */ 
} 
} 
0
int id; 
char name[80]; 

FILE *fp = fopen("data.txt", "r"); 

while (fscanf(fp, "%d%s[^n]", &id, name) == 2) 
{ 
    /* do something with id and name */ 
} 

은 먼저 라인을 읽고 다음에서 데이터를 얻을 필요가 없습니다. 대신 필요한 파일을 파일에서 직접 읽으십시오.

관련 문제