C 无法使用 rb 打开二进制文件

问题描述 投票:0回答:1

几天前写了这段代码,无法打开二进制文件,但后来我想出了如何做到这一点,但现在已经过去了几天,我完全忘记了:(如果我没有记错的话,我必须添加一些文件名末尾的字符以使其打开。有什么想法如何让它再次工作吗?

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”)。

c file file-io fopen
1个回答
0
投票

事实证明,由于

'\n'
,我的保存功能已经保存了名称中带有
fgets
的文件。添加
removeNewline
就成功了。

© www.soinside.com 2019 - 2024. All rights reserved.