历年全国青少年信息学奥林匹克联赛程序设计试卷题库 (8)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

s_n(struct mem apeo[],int bn)

{

FILE *wfp;

int i;

wfp=fopen("m_info","wb+");

if(wfp!=NULL)

{

for(i=0;i

{

if(fwrite(&apeo[i],sizeof(struct mem),1,wfp)!=1)

printf("\t\t\t\tfile write error\n");

}

}

else printf("fail to open file\n");

fclose(wfp);

}

上面是一个实例,主要是用fread();来读,用fwrite();来写。

格式为fread(buffer,size,count,fp);其中buffer是一个指针,它指向用来存储读出数据的地址。

size是每次读出数据的大小,count是连续读多少次;fp也是一个(文件)FILE类型的指针,它指被读取数据的文件。

fwrite(buffer,size,count,fp)大致一样就是buffer变成指向存储待写入数据的地址,fp 指向存储地址;

另外使用两个函数之前还要用fp=fopen("save.txt","r+");这个函数来打开文件

"save.txt"为文件名,,"r+"为打开方式,r+为以可读可写的方式打开一个文件

"+"为以可读可写的方式创建一个文件;

这是按照学号排序并写入二进制文件,那怎么排序并且写出文本文件并且读出这些信息呢?结构体定义中有

struct Student

{

int num; /*学号*/

char name[10]; /*姓名*/

int grades[M]; /*共有M

们功课*/

int total; /*总分*/

int rank; /*排名*/

char sex[4]; /*性别*/

}Stu[N];

void Selection_num(struct Student *st,int n)

{

FILE *fp;

int i,j,min,z;

struct Student temp;

for(i=0;i

{

min=i;

for(j=i+1;j

{

if(st[j].num

min=j;

}

if(min!=i)

{

temp=st[i];

st[i]=st[min];

st[min]=temp;

}

}

if((fp=fopen("stu_info.dat","w+"))==NULL)

{

printf("can not open file! ");

exit (0);

}

for(z=0;z

{

if(fwrite(&st[z],sizeof(struct Student),1,fp)!=1)

printf("File write error\n");

}

}

如何用c语言读一个文本文件,然后写入一个字符串

问题是字符串在定义的时候要写清大小,无论如何实现最后都要合成一个字符串。

#include

void read(FILE *f,int len);

int main(void){

int i,len;

FILE *ifp;

len=1;

ifp=fopen("c:\a.txt","r");

while((i=getc(ifp))!=EOF){

len=len+1;

}

read(ifp,len);

}

void read(FILE *f,int l){

int i;

char text[]=(char *)malloc(sizeof(char)*10);

for(i=0;i

text[i]=getc(f);

printf("%c",text[i]);

}

}

C中如何在一个文件开头写入文本

要在一个文件开头就写入str,但不删除下面本来的文本内容,在写入前先指定了指针到文件开头,怎么没用,该怎么做呢?

fseek(fp[i],0,0);

fprintf(fp[i], "%s\n", str);

是用的添加模式,a,但是都添加到文件的最后面去了,我要添加在文件的最开头

fseek试了好几种,都无法改变添加在最后的情况.

------解决思路----------------------

先读出已有的所有内容到内存,再直接覆盖写入新的头部内容,最后把原有的内容写回去------解决思路----------------------

应该是你

fseek

的问题

设置为0,

当用"a"打开文件的话,应该是自动到文件末尾了啊

------解决思路----------------------

文件操作只能覆盖或者追加,没有插入这个东东滴。

想要实现的话,自己编代码吧~~~~!!!

------解决思路----------------------

没有办法直接写入,因为你二进制文本是写在硬盘上的,写入了某个扇区,数据是没有办法移动的,只能在后面追加,但是如果这个文本文件不是已存在的,而是在写入过程中突然发现掉了某一字符串,这时可以通过流指针来改变写入的位置,如果文本已存在,而是二次更新的话,那么只能把文本中的数据读入某个存储区域,重新排列后在写入文本,这样就可以达到楼主的目的。

如何用c语言读一个文本文件,然后将读入的字符写入一个字符串中?问题是字符串在定义的时候要写清大小,无论如何实现最后都要合成一个字符串。

#include

void read(FILE *f,int len);

int main(void){

int i,len;

FILE *ifp;

相关文档
最新文档