C 코드를 사용하여 파일에서 마지막 n 문자를 삭제해야합니다. fist에서 나는 '\ b'를 사용하려했지만 Segmentation Fault를 반환합니다. 나는 유사한 질문 here과 here에 대한 흥미로운 대답을 보았지만 가능하다면 이것을 수행하기 위해 mmap
함수를 사용하는 것을 선호한다. 임시 파일을 만들고 파일의 일부가 원래 파일에 남을 때까지 임시 파일에 문자를 쓰면 파일을 자르는 것이 더 간단 할 수 있습니다. 문제는 내가 mmap
함수를 사용하는 방법을 이해하지 못하는 것입니다.이 함수에 전달해야하는 매개 변수는 특별히 address
, length
및 offset
입니다. 내가 읽은 것부터 flags
에 MAP_SHARED
, 에 protect
을 사용해야합니다.C 파일에서 마지막 n 문자 삭제
함수 정의는 말한다 : 임시
int main(int argc, char * argv[])
{
FILE * InputFile;
off_t position;
int charsToDelete;
if ((InputFile = fopen(argv[1],"r+")) == NULL)
{
printf("tdes: file not found: %s\n",argv[1]);
}
else
{
charsToDelete = 5;
fseeko(InputFile,-charsToDelete,SEEK_END);
position = ftello(InputFile);
printf("Pos: %d\n",(int)position);
int i;
//for(i = 0;i < charsToDelete;i++)
//{
// putc(InputFile,'\b');
//}
}
fclose(InputFile);
return 0;
}
나는 당신이 제안한 것처럼'ftruncate (fileno (InputFile), position);'사용했고 그것은 훌륭하게 작동했습니다. 감사! – anairinac
처음 n 문자는 어떻게 삭제 하시겠습니까? – momosxp
터미널 창에서'BACKSPACE'가하는 것과 같은 파일에 쓰여진 마지막 문자를 지울 수있는 유일한 방법 (특별한 용도와 더 복잡한'mmap' 방법 외) ++ 1 –