gpt4 book ai didi

c - 将文本插入文件时末尾出现奇怪的符号

转载 作者:行者123 更新时间:2023-11-30 15:37:25 25 4
gpt4 key购买 nike

我正在尝试制作一个简单的程序,用于在现有文本文件中的特定位置插入一些文本。例如,如果在文件text.txt中文本“示例文本”,则运行程序后应在text.txt中“saminserting textple文本”。但有时程序会在文本末尾插入一些奇怪的符号,所以在这种情况下我得到“saminserting textple textX€”(由于某种原因“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;
}

如果有任何帮助,我将不胜感激。

最佳答案

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);

关于c - 将文本插入文件时末尾出现奇怪的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22237596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com