花開丶若相惜ソ 发表于 2015-12-26 11:43:32

c文件,运行最后输出的文件里出现乱码,怎么回事啊。求解

本帖最后由 花開丶若相惜ソ 于 2015-12-26 11:52 编辑

#include <stdio.h>
#include <stdlib.h>
void main()
{struct { char name;int num;int cj;}stu;
int i;
FILE *fp;
if((fp=fopen("d:\\student.dat","wb"))==NULL)
{ printf("打开文件出错\n");exit(0);}
for(i=0;i<2;i++)
{ scanf("%s",stu.name);
scanf("%d",&stu.num);
scanf("%d",&stu.cj);
fwrite(&stu,sizeof(stu),1,fp);
}
fclose(fp);
}   

花開丶若相惜ソ 发表于 2015-12-26 15:00:04

咋没人理呢。。

黑龍 发表于 2015-12-26 15:04:57

因为你写的代码太好看了

黑龍 发表于 2015-12-26 15:25:55

这个应该是楼主想要的效果 又不是写入二进制数据 干什么要用fwrite。。。。。
而且你这代码太规范了 我看不懂。。。。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define size 1

struct MyStruct{
        char name;
        int num;
        int cj;
}stu;

int main(void)
{
        int i;
        FILE *fp;
        fp=fopen("D:\\student.dat","wb+");
        if(!fp)
                printf("打开文件出错");
        else if(!feof(fp))
        {
                for(i=0;i<2;i++)
                {
                        strcpy(stu.name,"");
                        scanf("%s",stu.name);
                        scanf("%d",&stu.num);
                        scanf("%d",&stu.cj);
                        /* 输出数据 并换行 */
                        fprintf(fp,"%s\r\n%d\r\n%d\r\n",stu.name,stu.num,stu.cj);//你也不能输入二进制数据 没必要用fwrite
                }
                fclose(fp);
        }
}

花開丶若相惜ソ 发表于 2015-12-27 11:27:39

黑龍 发表于 2015-12-26 15:04
因为你写的代码太好看了

。。问题是这题是考试里的填空题。。fwrite那句是填空。。。如果不填fwrite,,填什么能实现这题呢。。

花開丶若相惜ソ 发表于 2015-12-27 12:06:08

试了下。fprintf可以。。

黑龍 发表于 2015-12-27 12:54:20

花開丶若相惜ソ 发表于 2015-12-27 11:27
。。问题是这题是考试里的填空题。。fwrite那句是填空。。。如果不填fwrite,,填什么能实现这题呢。。

fwrite好像也可以
页: [1]
查看完整版本: c文件,运行最后输出的文件里出现乱码,怎么回事啊。求解