如果有人问过并回答我很抱歉,但我找不到任何专门针对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检查文件是否存在,但两者都随时都没有(二进制)文件。我做错了什么?
此外,我是如何使用这种结构创建自己的二进制文件的?我甚至不知道从哪里开始。
答案 0 :(得分:1)
您的bin_name
为NULL,因为它是从token
分配的,它是NULL。因此,fopen(bin_name, "rb")
崩溃了。
至于从哪里开始,我强烈推荐语言设计师Kernighan和Ritchie的 The C Programming Language ,第2版。