我在文件里有一些奇怪的人物。。。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);