C编程:读写二进制文件

时间:2017-04-18 18:51:03

标签: c file fopen binaryfiles strtok

如果有人问过并回答我很抱歉,但我找不到任何专门针对C(而不是C ++)应用的反应良好的主题。

我想读取(并写入)带有用户输入文件名的二进制文件。我还想使用特定格式的文件标题,如下所示。

typedef struct binary_file {
    uint32_t user_id;
    uint16_t age;
};

但是......我无法让它发挥作用!而且我不知道出了什么问题。这是我尝试打开文件。

char *token;
char input[MAX_LINE]

int main (int argc, char** argv) {
    while (fgets(input, MAX_LINE, stdin)!=NULL) {
        token = strtok(input, " \n");
        token = strtok(NULL, " ");
        if (token != NULL) {
            bin_name = token;
            FILE * the_file
            the_file = fopen(bin_name, "rb");
            if (the_file == NULL) {
                printf("file not found");
            }
            else {
                printf("file found");
                fclose(the_file);
            }
        }
    }
    return 0;
}

我还尝试使用sys / stat.h检查文件是否存在,但两者都随时都没有(二进制)文件。我做错了什么?

此外,我是如何使用这种结构创建自己的二进制文件的?我甚至不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

您的bin_name为NULL,因为它是从token分配的,它是NULL。因此,fopen(bin_name, "rb")崩溃了。

至于从哪里开始,我强烈推荐语言设计师Kernighan和Ritchie的 The C Programming Language ,第2版。