我正在根据一些局部变量创建一个包含内容的文件。我不知道文件最后会持续多长时间。由于我定义了一个固定大小的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);
答案 0 :(得分:1)
传递给fwrite()
的第三个参数是要写入的字节数,因此不是使用写入:
fwrite(buffer, 1, sizeof(buffer), pFile )
计算你真正想要写的字节数,然后执行:
fwrite(buffer, 1, numBytesToWrite, pFile )
答案 1 :(得分:1)
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)
。