gpt4 book ai didi

c - C 中的缓冲区故障

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

我尝试写入一个缓冲区,以便可以删除文件中的许多空“00”字符。这些角色毫无用处并且完全是随机的。他们正在对程序中的搜索者造成严重破坏。下面的代码可以编译,但在将文件传递给它时似乎会挂起。任何建议都会有帮助。

void ReadFile(char *name)
{
FILE *dbg;
char *buffer;
unsigned long fileLen;

//Open file
dbg = fopen(dbg, "w+");
if (!dbg)
{
fprintf(stderr, "Unable to open file %s", name);
return;
}

//Get file length
fseek(dbg, 0, SEEK_END);
fileLen = ftell(dbg);
fseek(dbg, 0, SEEK_SET);

//Allocate memory
buffer = (char *)malloc(fileLen+1);
if (!buffer)
{
fprintf(stderr, "Memory error!");
fclose(dbg);
return;
}

//Read file contents into buffer
fread(buffer, fileLen, 1, dbg);
for(i = fileLen-1; i >= 0 && buffer[i] == 0; i--);
i++;
if (i > 0)
{
fwrite(buffer, 1, i, dbg);
}
fclose(dbg);

//Do what ever with buffer

free(buffer);
}

最佳答案

改变

dbg = fopen(dbg, "w+");

dbg = fopen(name, "w+");

此外,如果您想读取文件,更改它然后写入它,则不应使用“w+”打开它。您应该首先使用 "r" 打开文件,从中读取内容,进行任何您想要的更改,然后 fclose 它,然后再次打开它,但这次使用 “w” 以便您可以覆盖它。在"w"写入模式下打开它后,您可以将修改后的缓冲区写回到文件中。

关于c - C 中的缓冲区故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7800188/

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