我正在尝试删除数据文件中的字符串。
数据格式就像以下记录一样:
4253 1
3119 1
5709 1
576 1
857 1
5859 1
5896 1
116 1
2396 1
1088 1
4180 1
这些是文件的一部分。我无权发送img。 每个记录由空格隔离的两个数字组成,并由不可见的char'\ n'隔离。 文件中有数千条记录,我只想删除一些扫描文件时无用的记录。应该使用C语言来实现它。
非常抱歉没有提供详细的数据格式。
答案 0 :(得分:2)
C中的文件是顺序实体。除非你将自己的结构强加给它们(例如将NUL字符视为不存在的字符),删除字符或行的唯一真正方法是覆盖它们,将文件的一部分移到它们之后一点点朝前。
您可以使用fseek
和truncate
(最后不是ISO C)或通过读取一个文件并写入另一个文件来就地执行此操作。
例如,以下程序将从标准输入中删除包含11
的行:
#include <stdio.h>
int main (void) {
char buff[1024];
while (fgets (buff, sizeof(buff), stdin) != NULL)
if (strcmp (buff, "11\n") != 0)
printf ("%s", buff);
return 0;
}
请注意通常的警告线条,这些线条对于输入缓冲区来说太长了。