您的位置:

c语言read函数可以打开文件吗,c语言read函数读取文件

本文目录一览:

c语言求助!readfile()那个函数有问题,请您帮助写一个可以没有问题的代码。真心感谢您!

#includestdio.h

#includemath.h

#includemalloc.h

#includestdlib.h

#includestring.h

enum sex{

female,male

};

struct student

{

char name[20];

enum sex sex;

int score[3];

char number[9];

struct student *next;

};

//学生结构体

struct student* inputcard()

//录入学生信息系统(所有学生信息)

{

int i=1;

int n,k;

printf("输入学生个数:");

//检错。学生个数正确

scanf("%d",n);

struct student*p;

struct student*p0;

struct student*head;

p=(struct student*)malloc(sizeof(struct student));

printf("输入学号8位:");

//检错。学号数目正确

scanf("%s",p-number);

printf("输入姓名:");

scanf("%s",p-name);

printf("选择性别:0男,1女");

//检错。性别输入正确

scanf("%d",k);

switch(k)

{

case 1:

p-sex=female;

break;

case 0:

p-sex=male;

}

printf("输入成绩,语数外的顺序");

//成绩输入在0~100

scanf("%d%d%d",(p-score[0]),(p-score[1]),(p-score[2]));

head=p;

//先输入一个,记录链头

p0=p;

while(i=n-1)

{

int k;

p=(struct student*)malloc(sizeof(struct student));

printf("输入学号:");

scanf("%s",p-number);

printf("输入姓名:");

scanf("%s",p-name);

printf("选择性别:0男,1女");

scanf("%d",k);

switch(k)

{

case 1:

p-sex=female;

break;

case 0:

p-sex=male;

}

printf("输入成绩,语数外的顺序");

scanf("%d%d%d",(p-score[0]),(p-score[1]),(p-score[2]));

p0-next=p;

p0=p;

i++;

}

p0-next=NULL;

return

head;

}

void writefile0(struct student*head) //已知链表头head,将之写入文件中

{

struct student*p1;

FILE *f0;

char string[40];

printf("请输入文件路径或者文件名字!(扩展名)");

scanf("%s",string);

f0=fopen(string,"w");

//新建一个文件

p1=head;

while(p1!=NULL)

{

fprintf(f0,"%5s ",p1-number);

fprintf(f0,"%5s ",p1-name);

fprintf(f0,"%5d ",p1-sex);

fprintf(f0,"%5d ",p1-score[0]);

fprintf(f0,"%5d ",p1-score[1]);

fprintf(f0,"%5d\n",p1-score[2]);

p1=p1-next;

}

printf("所有学生的信息已写入文件%s中\n",string);

fclose(f0);

}

struct student* readfile0() //读取原始文件(所有学生的信息)

{

FILE *f0;

struct student *head=NULL, *tail,*m;

char string[40];

student temp;

printf("请输入总信息的文件名:");

scanf("%s",string);

while((f0=fopen(string,"r"))==NULL)

{

printf("不能打开,重新输入\n");

scanf("%s",string);

}

while(!feof(f0))

{

fread(temp,sizeof(struct student),1,f0);

m=(struct student*)malloc(sizeof(struct student));

*m = temp;

if ( head==NULL )

head=m;

else

tail-next=m;

tail=m;

}

tail-next=NULL;

printf("该文件已打开!\n");

fclose(f0);

return

head;

}

void Free(student * head)

{

student *p = head;

while(p != NULL)

{

p = head-next;

free(head);

head = p;

}

}

void main()

{

struct student* base0;

struct student* base1;

base0=inputcard();

writefile0(base0);

base1=readfile0();

Free(base0);

Free(base1);

}

c语言中fopen函数的打开方式,二进制打开和正常打开文件有什么区别?

r模式打开的文件一般都是ASCII文件,也就是文件文件,供直接阅读的(用记事本程序打开该文件可以直接阅读),这种方式下打开文件一般用fscanf()/fgetc()等函数操作

rb模式打开的文件一般不用于直接阅读(用记事本打开后看到的可能是乱码),而是存取程序要用到的二进制数据,这种方式下打开文件一般用fread()函数进行操作

如何用C语言fopen函数实现这样的文件打开功能?

部分方法:\x0d\x0afopen的函数原型:FILE * fopen(const char * path,const char * mode);\x0d\x0afopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:\x0d\x0ar 以只读方式打开文件,该文件必须存在。\x0d\x0ar+ 以可读写方式打开文件,该文件必须存在。\x0d\x0arb+ 读写打开一个二进制文件,允许读数据。\x0d\x0arw+ 读写打开一个文本文件,允许读和写。\x0d\x0aw 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。\x0d\x0aw+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。\x0d\x0aa 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)\x0d\x0aa+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)\x0d\x0awb 只写打开或新建一个二进制文件;只允许写数据。\x0d\x0awb+ 读写打开或建立一个二进制文件,允许读和写。\x0d\x0awt+ 读写打开或着建立一个文本文件;允许读写。\x0d\x0aat+ 读写打开一个文本文件,允许读或在文本末追加数据。\x0d\x0aab+ 读写打开一个二进制文件,允许读或在文件末追加数据。\x0d\x0a上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。\x0d\x0a\x0d\x0aC语言的文件处理的过程是,先声明一个文件指针,然后用fopen函数打开文件,fopen打开文件成功的话返回一个指针该流的文件指针,然后利用指针对文件进行操作就好了,最后完事了在fclose函数关闭流,并释放指向他的指针。\x0d\x0a例如:要对c:\example.txt的文本文件内容为:ISP,进行操作\x0d\x0a#include \x0d\x0a\x0d\x0aint main()\x0d\x0a{\x0d\x0achar ch;\x0d\x0aFILE* fp;\x0d\x0achar fname[50] = "c:\example.txt";\x0d\x0afp = fopen(fname,"r"); //只供读取\x0d\x0aif(fp == NULL) //如果失败了\x0d\x0a{\x0d\x0aprintf("ERROR!");\x0d\x0areturn 1;\x0d\x0a}\x0d\x0a//getc()用于在打开文件中获取一个字符\x0d\x0awhile((ch = getc(fp)) != EOF) //循环获取直至文件结束 EOF标志(End Of File)\x0d\x0aputchar(ch); //打印获取到的字符\x0d\x0afclose(fp); //关闭文件\x0d\x0areturn 0;\x0d\x0a}\x0d\x0a\x0d\x0a希望对你有帮助!