2015-01-25 5 views
-1

내 프로그램에 큰 문제가 있습니다. 1 행에서 읽는 것을 건너 뛰고 다른 사람들로부터 읽기를 시작하고 싶습니다. 나는 인터넷에서 그것을 검색하는데 많은 시간을 낭비했다.C에서 텍스트 파일 읽기, 첫 줄 건너 뛰기

이것은 내 txt 파일입니다. 당신은 C 입력과 C++ 출력을 혼합하기 때문에

LP bfdhfgd ffhf fhfhf hgf hgf hgf ffryt f uu 
 
1 2015-01-17 20:08:07.994 53.299427 15.906657 78.2 0 
 
2 2015-01-17 20:09:13.042 53.299828 15.907082 73.3 11.2375183105 
 
3 2015-01-17 20:09:22.037 53.300032 15.90741 71.2 12.2293367386 
 
4 2015-01-17 20:09:29.035 53.300175 15.907675 71.5 10.8933238983 
 
5 2015-01-17 20:09:38.003 53.30025 15.907783 71.4 12.3585834503 
 
6 2015-01-17 20:09:49.999 53.300768 15.908423 72.4 14.1556844711 
 
7 2015-01-17 20:09:58.999 53.300998 15.908652 73.7 11.2634601593 
 
8 2015-01-17 20:10:06.998 53.301178 15.908855 72.6 10.8233728409 
 
9 2015-01-17 20:10:15.999 53.301258 15.908952 72.3 10.3842124939 
 
10 2015-01-17 20:10:22.999 53.301332 15.90957 71.5 10.7830705643 
 

 
void OK(char * name) 
 
{ 
 
\t GPS nr1; //my structure 
 
\t FILE *file; 
 
\t file = fopen(name, "r+t"); 
 

 
\t if (file!=NULL) 
 
\t { 
 
\t \t cout << endl; 
 
\t  while (!feof(file)) 
 
     { 
 
      fscanf(plik, "%d %s %d:%d:%f %f %f %f %f", &nr1.LP, &nr1.Date, &nr1.hour, &nr1.min, &nr1.sek, &nr1.dl, &nr1.sz,     &nr1.high, &nr1.speed); 
 
\t \t  base.push_back(nr1); 
 

 
\t \t  cout << nr1.LP << " " << nr1.Date << " " << nr1.hour << ":" << nr1.min << ":" << nr1.sek << " " << nr1.dl << " " <<    nr1.sz<< " " << nr1.high << " " << nr1.speed <<endl; \t 
 
     } 
 
\t } 
 
\t else 
 
\t { 
 
\t \t cout << endl << "ERROR!"; 
 
\t \t exit(-1); 
 
\t } 
 

 
\t fclose(file); 
 

 
}

답변

0

우선은, 코드가 좀 이상하다. 나중에 문제를 해결할 수도 있습니다.

원하는 동작을 얻으려면 fgets을 사용하여 줄을 읽은 다음 (첫 줄을 건너 뛰고) sscanf을 사용하여 값을 꺼냅니다.

#include <stdio.h> 


void OK(char * name) 
{ 
    GPS nr1; //my structure 
    FILE *file; 
    file = fopen(name, "r"); 

    char buffer[1024]; 
    memset(buffer, 0, 1024); 

    if (file!=NULL) 
    { 
     cout << endl; 
     // skip first line 
     fgets(buffer, 1024, file); 
     while (!feof(file)) 
     { 
      // Read a line and parse it. 
      fgets(buffer, 1024, file); 
      sscanf(buffer, "%d %s %d:%d:%f %f %f %f %f", &nr1.LP, &nr1.Date, &nr1.hour, &nr1.min, &nr1.sek, &nr1.dl, &nr1.sz, &nr1.high, &nr1.speed); 
      cout << nr1.LP << " " << nr1.Date << " " << nr1.hour << ":" << nr1.min << ":" << nr1.sek << " " << nr1.dl << " " << nr1.sz<< " " << nr1.high << " " << nr1.speed <<endl;  
     } 
    } 
    else 
    { 
     cout << endl << "ERROR!"; 
     exit(-1); 
    } 

    fclose(file); 

} 
+0

감사합니다 :)이 도와 내 문제 – FriDe

+0

@FriDe는, 다행 해결했다. – merlin2011