2015-02-04 20 views
0

텍스트 파일의 특정 줄 끝 부분에 문자열을 쓸 수있는 프로그램을 만들려고합니다.C++ 텍스트 파일 : 특정 줄 끝으로 쓰기

12 23 
53 23 

이제 어떻게 내가 (첫 번째 줄의 끝에 다른 두 자리 숫자를 추가하는 프로그램이 있다면 나 :

예를 들어

이 그냥 임의의 숫자의 무리와 함께 텍스트 파일입니다 어떤 특정 라인), 내가 계속 프로그램을 다시 실행하면 라인이 계속 확장된다는 것을 명심하십시오.

그래서 프로그램을 실행 한 후, 텍스트 파일은 다음과 같이 보일 것입니다 :이 문제를 해결하는 몇 가지 방법은 무엇

12 23 34 
53 23 

?

+0

'fseek()'와'ftell()'이 도움이 될 것입니다. – ForceBru

+0

파일에 행을 저장하고 거기에서 업데이트하십시오. 그런 다음 모두 다시 파일에 씁니다. – 0x499602D2

답변

2

내가이 질문을 이해할 수 없다면. 문제는 한 줄을 길게 만들면 다음 줄을 덮어 쓰게된다는 것입니다. 당신은 다음 라인이 룸을 만들기 위해 아래로 이동하기를 기대하고있는 것처럼 보이지만 그것이 작동하는 방식은 아닙니다.

파일이 큰 경우가 아니면 파일을 메모리에로드하고 메모리의 데이터를 수정 한 다음 결과를 저장할 새 파일을 만드는 것이 가장 좋습니다. (필요한 경우 같은 파일에 저장할 수 있습니다.)

다른 알고리즘은 파일에 링크 된 목록이있는 고정 크기의 블록을 사용하지만 일반 텍스트로 파일을 만들고 싶은 것처럼 들리지만 작동하지 않을 것이다.

+0

나를 예를 들어 주시겠습니까? 감사! –

+0

@FirzanArmani : 세부 정보는 거의 제공하지 않았습니다. 고려해야 할 문제 유형 (파일 크기, 파일 형식 등)을 제기했습니다. 응답했지만 아직 귀하의 요구 사항에 대한 추가 정보가 없습니다. 그것에 대해 생각하고 나서 어디서 붙어 있는지 더 구체적인 질문을하는 것이 더 생산적 일 것입니다. –

+0

@Johnathan Wood 아, 유감스럽게 생각합니다. 최근에 학교에서 C++을 배우기 시작했는데 이것이 제가 생각한 것입니다. 나는 .txt 파일이 그 기능을 증명하는 작은 프로그램 일만큼 크지 않을 것이라고 생각한다. txt 파일을 메모리에로드하고 수정 한 다음 txt 파일을 덮어 쓰는 방법에 대해 알고 싶습니다. 특히 지금까지 배운 것 이상입니다. 이걸 조사하기 위해 무엇을 검색해야합니까? –

0

텍스트 파일 을 절대 수정하지 마십시오.. 가장 일반적인 방법은 임시 위치에 편집 된 파일을 쓰고 마지막에 원래 파일을 제거한 후 이전 이름으로 바꿉니다.

다른 방법으로는 (파일이 충분히 작 으면) 모든 것을 메모리에로드하고 처음부터 파일을 다시 쓸 수 있습니다. 그러나 프로그램 (또는 컴퓨터 또는 전력)이 중간에 충돌하면 파일이 확실히 손실 될 수 있기 때문에 민감한 파일에서는 절대 그렇게하지 마십시오.