here처럼 fputs를 사용하십시오. 새 줄을 인식하려면 내용을 반복하고 줄 바꿈 문자 (예 : '\ n'은 Linux)를 계산해야합니다. 현재 가리키는 캐릭터는 getc입니다. 이를 구현하기 위해
한 가지 방법은 주어진 행이 시작 그래서 같은 곳의 바이트 위치를 반환하는 함수를 작성하는 것입니다 : fseek
한 다음 getRowPos
에 의해 반환 된 위치로 갈 수 사용
#include <stdio.h>
int getRowPos(int row,FILE* fp){
int pos=1,lines=1,currChr;
do{
currChr=getc(fp);
if(currChr=='\n')
lines++;
}while(lines<row && currChr!=EOF && ++pos);
return pos;
}
플러스 열 번호는 (즉 바이트, 라인에 수), 다음과 같이 fputs를 사용하여 원하는 내용을 쓰기는 :
int row=wanted row
int col=wanted column
FILE * pFile;
//Open file for read and write
pFile = fopen ("myfile.txt" , "rb+");
int rowPos=getRowPos(row,pFile);
fseek (pFile , rowPos+colPos , SEEK_SET);
fputs ("my new content" , pFile);
fclose (pFile);
당신이 당신의 라인입니다 n은 넓은 말할 너비를 알고 있다면, 당신은 lseek
추가 할 수 있습니다 n 바이트를 건너 뛴다. getc
에 전화하기 전에 ead하십시오.
있습니다. 당신의 예제에서 첫번째는 바이트 0에서, 라인은 바이트 6에서, blah는 바이트 11에서 시작합니다. 여러분이 보았습니다 :'fseek' 명령은 라인, 문장 및 단어의 어떤 것도 이해하지 못합니다. –
바이트 수는 문자 수만큼 영향을 받습니까? 16 행에 6000자를 썼다면 17 행 20 열의 바이트 수를 바꿀까요? –
나는 처음 코멘트 게시물에 편집을 엉망으로 만들었다. .. 미안. –