将文本插入文件时结尾的奇怪符号

时间:2014-03-06 22:33:36

标签: c fseek

我正在尝试制作一个简单的程序,用于在现有文本文件中的特定位置插入一些文本。例如,如果在文件text.txt文本“示例文本”中,运行程序后应该在text.txt“saminserting textple text”中。但有时程序会在文本的末尾插入一些奇怪的符号,所以在这种情况下,我得到了“文本文本X”(由于某些原因,文本末尾的“X€”),我无法弄清楚,为什么。 我的代码:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h>


int main ( int argc, char *argv[] )
{

FILE *file;

 file = fopen("text.txt", "rb+"); //processed file
 if (file == NULL) return 0;

 char *test = "inserting text"; //text for inserting
 char *buffer;
 int size;

 fseek(file, 0L, SEEK_END);
 size = ftell(file);

 fseek(file, 3L, SEEK_SET);
 buffer = malloc(abs(3L - size) + 1);
 fread(buffer, abs(3L - size), 1, file);

 fseek(file, 3L, SEEK_SET);
 fwrite(test, strlen(test), 1, file);
 fwrite(buffer, strlen(buffer), 1, file);

 free(buffer);
 fclose(file);

 return 0;
}

我会感激任何帮助。

1 个答案:

答案 0 :(得分:1)

buffer = malloc(abs(3L - size) + 1);
fread(buffer, abs(3L - size), 1, file);
...
fwrite(buffer, strlen(buffer), 1, file);

您永远不会终止buffer,因此您可能会对您所阅读的内容写出不同的内容。这样做。 (但实际上,使用size-3或更好的东西......)

fwrite(buffer, abs(3L - size), 1, file);