|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct student
- {
- int num;
- char name[20];
- int age;
- }student;
- int main()
- {
- student stu1;
- FILE *fp;
- fp = fopen("C:\\Users\\yyp\\Desktop\\t3.txt","wb");
- printf("Please input :\n");
- scanf("%d %s %d",&stu1.num,&stu1.name,&stu1.age);
- if(fp == NULL)
- {
- printf("ERROR!\n");
- exit(0);
- }
- else
- {
- fwrite(&stu1,sizeof(stu1),1,fp);
- }
- fclose(fp);
- return 0;
- }
复制代码
大佬们
代码如上,为什么输入比如说 11 Alex 22 这种的时候,打开txt文档看到的 只有Alex正常输出 而其他数字都乱码了呢?
本帖最后由 jackz007 于 2021-3-9 11:25 编辑
首先,这一句写错了
- scanf("%d %s %d",&stu1.num,&stu1.name,&stu1.age) ;
复制代码
应该改成这样
- scanf("%d%s%d",&stu1.num,stu1.name,&stu1.age) ;
复制代码
其次,这一句
- fp = fopen("C:\\Users\\yyp\\Desktop\\t3.txt","wb");
复制代码
代表你所创建的文件是一个二进制的文件,这个文件中储存了一个结构数据,这个结构的 num 和 age 成员是整型数,文件中保存的是它们二进制的编码,也就是它们实际的内存映像,是不能通过肉眼直接看到的; name 成员保存的是文本,也就是字符串,是可以通过肉眼直接看到的。
如果希望文件内容是文本,那就应该这样写代码:
- #include<stdio.h>
- typedef struct student
- {
- int num ;
- char name[20] ;
- int age ;
- } student ;
- int main(void)
- {
- student stu1 ;
- FILE * fp ;
- if((fp = fopen("C:\\Users\\yyp\\Desktop\\t3.txt","w")) != NULL) {
- printf("Please input : ") ;
- scanf("%d%s%d" , & stu1 . num , stu1 . name , & stu1 . age) ;
- fprintf(fp , "%d %s %d\n" , stu1 . num , stu1 . name , stu1 . age) ; // 通过 fprintf() 函数把结构成员的内容显示成肉眼可辨的文本
- fclose(fp) ;
- } else {
- fprintf(stderr , "ERROR!\n") ;
- }
- }
复制代码
|
|