gpt4 book ai didi

c - 在 fwrite 之前修剪 buffer[] 中未使用的项目

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:16 24 4
gpt4 key购买 nike

我正在创建一个文件,其内容取决于一些局部变量。我不知道文件最后会有多长时间。由于我定义了一个固定大小的 buffer[] 数组,因此生成文件中的最后一个字符是垃圾。在将其写入文件之前,我应该如何修剪 buffer[] 数组?或者 fwrite 仅使用的字节?

这是我的代码:

FILE * pFile = NULL;
char buffer[300];
int ret_val = -1;
strcpy_s(buffer, "The path is \"");
strcat_s(buffer, pathVariable);
strcat_s(buffer, "\"\n");
pFile = fopen(myfile, "w");
if(NULL == pFile)
{
perror("File opening error");
return -1;
}
ret_val = fwrite(buffer, 1, sizeof(buffer), pFile );
if(sizeof(buffer) != ret_val)
{
perror("File writing error");
return -1;
}
fclose(pFile);

最佳答案

fwrite() 不知道您认为“使用”了哪些字节。当你这样调用它时:

fwrite(buffer, 1, sizeof(buffer), pFile );

它将写入 sizeof(buffer) 字节。

将调用更改为:

ret_val = fwrite(buffer, 1, used_bytes, pFile );

其中 used_bytes 是您在调用之前设置的一些变量。

您还需要更改后续的错误检查:

if(ret_val != used_bytes)

编辑 在这种情况下,您似乎希望将 used_bytes 设置为 strlen(buffer)

关于c - 在 fwrite 之前修剪 buffer[] 中未使用的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8927415/

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