2013-05-07 4 views
0

이미 존재하는 파일에 일부 데이터를 쓰고 싶습니다. 약 8-10 줄의 머리글 (# 설명)을 포함하고 수천 줄의 data values이 들어있는 파일입니다. 내가 원하는 것은 헤더를 동일하게 유지하지만 업데이트 된 data values을 파일에 추가하는 것입니다. 업데이트 이후에는 줄 수가 더 적어서 data values이 될 가능성이 큽니다.파일의 특정 줄에 쓰는 방법은 무엇입니까?

그래서 기본적으로 내가 헤더의 마지막 # 주석 이후의 모든 자료가 지워 다음이 이후에서 새 값을 쓰기 시작하고 싶다. 그게 가능하니? 여기

은 예입니다

원본 파일

#Program 
#Date 
#Hello 
0 23 23 54 
1 12 4 2 
2 253 786 9887 
3 3 23 54 
4 1 4 4 
5 23 6 81 

업데이트 파일

#Program 
#Date 
#Hello 
0 2 23 54 
2 253 786 9887 
5 23 6 81 

코드 내가 파일을 읽을 수 fopen를 사용하여 편집이 오전 fprintf가 쓸 수 있습니다. 나는이 두 줄을 바꿀 필요가 없도록이 줄에 답이있는 것을 선호합니다.

+1

당신이 관계가 덮어 같은 파일이라는 사실, 그냥 다시 쓰기 전에 닫으십시오? C++에서는'std :: fstream'을 사용해야합니다. – mwerschy

+0

제가 작업중인 소프트웨어는 fopen을 사용합니다. – detraveller

+0

아 음 ... 그냥 getline''로 쉽게 있었던 것이다 – mwerschy

답변

6

가장 간단한 방법은 Original File을 열어 string header과 같은 메모리에 헤더를 읽고 복사하는 것입니다. 그런 다음 header를 작성하여 전체 파일을 덮어, 새로운 데이터

+0

기존 파일을 덮어 쓸 것을 제안 하시겠습니까? 적어도 실제로는 가장 좋은 아이디어는 아니기 때문에, 글쓰기 중에 문제가 발생했을 때 부패한 데이터가 염려된다면 적어도. – jrok

+0

@jrok 나는 제안하지 않았다. OP가한다. OP의 첫 문장에서 "이미 존재하는 파일에 데이터를 쓰고 싶습니다." – GuLearn

+0

@jrok 만약 내가 완전히 덮어 쓰거나 덮어 쓰지 않는다면 대안은 무엇입니까? – detraveller

2

파일에서 헤더를 읽는 기능을 쓰기 클래스/변수/구조체에 저장합니다.

파일

순서대로 세 가지 기능을 실행할 원하는 값을 기록하는 기록 기능을 파일

에 헤더를 기록하는 기능을 적는다. 왜`fopen`를 사용하는

관련 문제