문자열의 일부를 파일의 다른 문자열로 덮어 쓰려고합니다.파일을 처리하여 문자열을 바꾸기
파일의 각 줄을 덮어 쓰려고합니다.
아래 코드를 작성했지만이 코드는 도움이되지 않습니다.
가정 해 파일을 여러 개의 선이 어디 선 컨테이너, 중 하나 --- 다음과 같이 변환해야 abcdefghioverwritefxyz89760
: - 위 abcdefghichangemadexyz89760
char lineFileRecord [150];
fp = fopen("abc.txt","r+");
while (fgets (lineFileRecord , 150 , fp) != NULL)
{
char* sample;
sample = strstr(lineFileRecord, "overwritef");
//overwritef and changemade both have same size
if(sample != NULL)
{
strncpy(sample, "changemade",10); // is the the correct way.
}
}
을 내용을 바꾸지 않는 코드. 파일의 내가 잘못하면 저를 바로 잡으십시오.
답장을 보내 주셔서 감사합니다.
수정 된 데이터를 올바른 오프셋으로 파일에 다시 써야합니다. – GWW
파일의 내용을 한 줄씩 메모리에 읽으면 메모리에 변경된 사항은 사용자가 쓰기 작업을 수행하지 않는 한 파일에 반영되지 않습니다. 업데이트를 위해 파일을 열어야하므로 각 쓰기 후에 _and_을 읽은 후에 검색해야합니다. 읽기와 쓰기 또는 그 반대로 전환 할 때 두 I/O 작업 사이에 탐색 작업이 있어야합니다 (또는 C 표준 참조). 만약 당신이 메모리 맵핑 된 파일을 가지고 있다면 규칙은 다르다 ('fgets()'를 메모리 맵핑 된 파일과 함께 사용하지 않는 것부터 시작한다). –
명확하게 설명해 주시겠습니까? – ashutosh