从文件中的特定位置删除字符串

时间:2011-03-31 06:50:54

标签: c

我想从文件中的特定位置删除字符串。这是一个功能吗? 我可以通过函数删除文件的最后一行吗?

3 个答案:

答案 0 :(得分:2)

没有这样的功能可以直接在文件上执行此操作。

您应该在内存中加载文件内容并在那里修改并写回文件。

答案 1 :(得分:1)

您有两个选项

  1. 要阅读整个文件,请删除所需内容并将其写回
  2. 如果文件很大,请按顺序读取文件,删除给定部分,然后在该文件之后移动内容

答案 2 :(得分:1)

我不想查找所有的io函数,所以这里有关于如何实现ArsenMkrt答案选项2的伪c

char buffer[N]; // N >= 1
int str_start_pos = starting position of the string to remove
int str_end_pos = ending position of the string to remove
int file_size = the size of the file in bytes
int copy_to = str_start_pos 
int copy_from = str_end_pos + 1

while(copy_from < file_size){
    set_file_pos(file, copy_from)
    int bytes_read = read(buffer, N, file)
    copy_from += bytes_read
    set_file_pos(file, copy_to)
    write(buffer, file, bytes_read)
    copy_to += bytes_read
}
truncate_file(file,file_size - (str_end_pos - str_start_pos + 1))

有效的东西