英文名字 凯瑟琳:在C语言中,怎么建立二进制文件?

来源:百度文库 编辑:高考问答 时间:2024/04/26 04:03:39
在学生文件stu_list中读出第二个学生的数据。
#include<stdio.h>
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boy,*qq;
main()
{
FILE *fp;
char ch;
int i=1;
qq=&boy;
if((fp=fopen("二进制文件","rb"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
rewind(fp);
fseek(fp,i*sizeof(struct stu),0);
fread(qq,sizeof(struct stu),1,fp);
printf("\n\nname\tnumber age addr\n");
printf("%s\t%5d %7d %s\n",qq->name,qq->num,qq->age,
qq->addr);
}

要是个C,或者文本文件的话,结果差了好多,就是因为不能建立二进制文件,所以结果就是不对
在C语言中,怎么建立二进制文件?

#include <stdio.h>

struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boy,*qq;

void main()
{
FILE *fp;
char ch;
int i=1;
qq=&boy;

stu SStu;
{
strcpy(SStu.addr, ("Beijing\0"));
SStu.age = 20;
strcpy(SStu.name, "Wang Wu\0");
SStu.num = 9;
}

if((fp=fopen("二进制文件","w"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
return;
}

// rewind(fp);
// fseek(fp,i*sizeof(struct stu),0);

i=fwrite(&SStu, sizeof(stu), 1, fp);
fclose(fp);

if((fp=fopen("二进制文件","r"))==NULL)return;
fread(qq,sizeof(stu),1,fp);
printf("\n\nname\tnumber age addr\n");
printf("%s\t%3d %6d %s\n",qq->name, qq->num,qq->age, qq->addr);
fclose(fp);
}

运行成功,看看改动有多少。

你的文件名似乎忘了写后缀,而且写入二进制流的参数不是rb 是wb