我正在使用C将一些数据写入文件.我想删除文件中写入的先前文本,以防它比我现在写的更长.我想减小文件的大小或截断直到结束.我怎样才能做到这一点?
我需要使用C代码从文件中删除最后n个字符.首先我试图使用'\ b',但它返回一个分段错误.我已经在这里和这里看到了类似问题的有趣答案,但我更愿意使用mmap函数来做到这一点,如果可能的话.我知道通过创建临时文件来截断文件,并将chars写入temp直到原始文件的某个偏移量可能更简单.问题是我似乎不明白如何使用mmap函数来做到这一点,无法看到我需要传递给该函数的参数,特别是address,length和offset.从我所读到的,我应该使用MAP_SHAREDin flags和PROT_READ|PROT_WRITEin protect.
函数定义说:
void * mmap (void *address, size_t length, int protect, int flags, int filedes, off_t offset)
Run Code Online (Sandbox Code Playgroud)
这是我的主要内容:
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 …Run Code Online (Sandbox Code Playgroud)