我在文件里有一些奇怪的人物。。。0美元@ϊ?0个@
我在写结构时做错了什么?
代码:

int main (){
    struct books {
        char name[30];
        int npages;
        char author[30];
}     book1;

    book1.name = "1000 leagues under the sea";
    book1.npages = 250;
    book1.author = "Jules Verne";


    FILE *book;
    book = fopen("book.txt", "wb");
    /* trying to write the struct books into a file called book.txt */
    fwrite( &book1, sizeof(book1), 1, book);
    fclose(book);
    return 0;
}

我改变了一些事情,现在我得到了一个文件。但我不知道档案里的npages。。。。就像“儒勒凡尔纳0@∏ώ”1000里海下“”

最佳答案

您正在文件中存储结构数据的二进制表示。您在文件中看到的奇怪字符正是:字段npages的二进制表示。是的,它看起来会像一组奇怪的角色,就像它应该有的那样。
如果要查看存储为该数字的可读(文本)表示形式的页数,则必须手动将其从二进制表示形式转换为文本表示形式,或者使用I/O函数来执行此操作。
事实上,如果你想看到所有以人类可读格式表示的内容,你需要一个文本文件,而不是二进制文件。也就是说,您需要将其作为文本文件打开,并使用格式化的输出函数来写入数据。

FILE *book = fopen("book.txt", "wt");
fprintf(book, "%s %d %s\n", book1.name, book1.npages, book1.author);
fclose(book);

08-04 14:37