几天前写了这段代码,无法打开二进制文件,但后来我想出了如何做到这一点,但现在已经过去了几天,我完全忘记了:(如果我没有记错的话,我必须添加一些文件名末尾的字符以使其打开。有什么想法如何让它再次工作吗?
int loadBoard()
{
dataLen = 0;
FILE *fPtr;
char filename[MAX_FILE_NAME_LEN];
printf("Enter your file name: ");
fgets(filename, MAX_FILE_NAME_LEN, stdin);
removeNewline(filename);
if ((fPtr = fopen(filename, "rb")) != NULL )
{
for (int i = 0; i < MAX_LIST_COUNT; i++)
{
if (feof(fPtr))
{
printf("\nFile has been loaded successfully!");
fclose(fPtr);
return 1;
}
else
{
dataLen += 1;
fread(&data[i], sizeof(List), 1, fPtr);
}
}
}
else
{
printf("\nFile %s could not be opened. Please try again.", filename);
return 0;
}
fclose(fPtr);
return 0;
}
我尝试使用 .txt 文件,一切正常,但 .dat / .bin 没有运气(我确实将密钥从“rb”更改为“r”)。
事实证明,由于
'\n'
,我的保存功能已经保存了名称中带有fgets
的文件。添加 removeNewline
就成功了。