2012-12-09 2 views
-2

기본적으로 저는 C로 프로그래밍 중이며, 텍스트 파일을 특정 지점으로 읽은 다음 일단 거기에 인쇄하면 프로그램에서 계산 된 데이터.특정 지점으로 텍스트 파일 읽기 및 해당 지점에 데이터 입력

나는 fread, fseek, fgets 등의 기능을 모두 읽었지만 실제로 어떻게 사용하는지 이해하지 못했습니다. Google 어스와 함께 사용할 .kml 파일이 있습니다. 내 프로그램은 좌표를 계산하므로 파일의 한 지점에 넣고 싶습니다. 파일의 데이터는 다음과 같습니다.

/*******text file******/ 

Linestring 

stlye 

etc.... 

coordinates 

3.0,36.8333333 

1.986105,37.166788 

0.963341,37.491533 

-0.068231,37.807386 

/*******eof*********/ 

따라서 좌표를 읽을 때까지 내 데이터를 모두 입력해야합니다. 는 어디 선가

char[25] = "coordinates"; 

if (function_that_searches_file == char){ 
    fprintf(myfile, "data%lf", data); // etc.. 
} 

같은 어쩌면이 생각했지만, 아무것도 찾을 수 없습니다. 그래서 어떤 도움이나 올바른 방향으로 지적 많은 감사 할 것입니다.

+0

"좌표"부분에 도달하기 전에 읽어야하는 문자 수를 알아보십시오. 그 시점까지 fseek하고 데이터를 삽입하십시오. 데이터를 검색해야하는 char 배열로 생각하십시오. 각 줄 바꿈은 배열의 일부 위치에서 '\ n'입니다. fseek와 기본 의사 코드를 사용하면됩니다. 거의 다 왔어. :) –

답변

3

C에는 문자열이 없으므로 같은 값으로 비교할 수 없습니다. 두 개의 문자열 (read about how to use it here)을 비교하려면 strcmp()을 사용해야합니다.

예를 들어, 파일의 각 라인을 읽는 루프를 만들고, 수있는 루프 넣어에서 :

if(!strcmp(lineFromFile, "coordinates")) 
{ 
    // Do something here 
} 

참고 : 0 때 동일한를 반환하기 때문에 strcmp()는 기억하기 조금 까다 롭습니다 . C에서 0이 거짓이기 때문에 그 이유는 무효입니다.

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. @ MichaelThiessen하지만 strcmp를 사용하면 비교를 찾은 후에 어디를 떠나겠습니까? 비교가 이루어지면 그 시점에 데이터를 추가해야 할 필요가 있습니다. 또한 추가 한 함수의 첫 번째 인수는 파일 포인터 일 수 있습니다. –