【二级C语言考试】文件操作

C语言二级考试——文件操作

只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求

  1. 文件类型指针(FILE类型指针)
  2. 文件的打开与关闭(fopen,fclose)
  3. 文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位(rewind,fseek函数的应用)

知识点参考【C语言】文件操作-CSDN博客

文件类型指针

第十九套40题

在这里插入图片描述

本题考查文件类型。选C

第二十套15题

在这里插入图片描述

本题考查C语言文件的概念。

C语言的源代码是文本文件。

文件的打开与关闭

第一套21题

在这里插入图片描述

本题考查EOF的作用。

EOF只作为文本文件的标志,但是文件必须是文本文件。EOF的值为-1.选B

第一套22题

在这里插入图片描述

本题考查对fopen函数的理解。

C库函数FILE*fopen(const char* filename,const char* mode);函数运行成功时,返回指向新文件流的指针,赋给文件指针变量,从而与文件联系起来,即把程序中要读写的文件与磁盘上实际的数据文件联系起来。失败时,返回空指针NULL。选A

文件的读写

第一套15题

在这里插入图片描述

#include <stdio.h>
int main ()
{
	FILE* fp;
	int i,a[6]={1,2,3,4,5,6} ,k;
	fp=fopen("data.dat","w+");
	/*首先建立一个新文件,进行写操作,随后可以从头开始读,
	如果指定的文件已存在,则原有的内容将全部消失*/ 
	
    for(i=0;i<6;i++){//遍历数组a[i] 
		fseek(fp,0L,0);//为给出的流位置设置数据,从文件的0位置偏移0L处开始 
		fprintf(fp,"%d\n",a[i]);//当i=0时向文件写入a[i=o],即k=1 
	} 
	//注意:每次循环写入会覆盖原文件中的内容 
	rewind(fp);//使文件的位置指针回到文件的开头
	fscanf(fp,"%d",&k);//将最后的k值输入文件 
	fclose(fp);
	printf("%d\n",k); 
}
//输出:6

第一套23题

在这里插入图片描述

本题考查文件输出函数。选C

第八套40题

在这里插入图片描述

本题考查文件处理函数。

本题中第一次调用fwrite函数是向文件中写入s2的值“Beijing”,第二次调用fwrite函数是向文件中写入s1的值“China”,并将先前的“Beijing”的前几个字符覆盖,得到“Chinang”。选B

#include <stdio.h>
int main ()
{
	FILE* fp;
	char* s1='China',*s2="Beijing";
	fopen("abc.dat","wb+");
	fwrite(s2,7,1,pf);
	/*对fp所指向的文件存入1次,每次存放一个大小为7字节的数据块,
	将存入的数据块存到s2指向的内存区,如果s2内存区有数据,则将其覆盖。*/ 
	rewind(pf);//文件位置指针回到文件开头
	fwrite(s1,5,1,pf);
	fclose(pf); 
}

第十套33题

在这里插入图片描述

定义一个FILE类型结构体指针fp,以“只写”方式打开一个test.txt文件,第一次向文件输入指针变量s1指向的7个字符,则此时文件内的内容为“Fotran”,执行fseek函数文件位置指针移动到文件的开头,第二次向文件输入指针变量s2指向的5个字符。

易错:虽然此时的文件前5个字符已被“Fortr”所占用,但向文件输入“Basic”这5个字符时,系统会覆盖原有的内容“Forta",所以最后test.txt里的内容为:Basican。

第九套40题

在这里插入图片描述

#include <stdio.h>
int main ()
{
	FILE* fp;
	char str[10];
	fp=fopen("myfile.dat","w");//打开文件进行写操作 
	/*如果文件不存在,则建立一个新文件,如果文件存在,文件中原有的内容全部消失*/ 
	fputs("abc",fp);//把字符串"abc"输出到文件fp中 
	fclose(fp);
	fp=fopen("myfile.dat","a+");//打开原来的文件不删除 
	fprintf(fp,"%d",28);//在原来的文件尾部添加新内容 
	rewind(fp);//使文件的位置指针重新返回到文件的开头 
	fscanf(fp,"%s",str);//从文件fp中按字符串格式输入到str中 
	puts(str);
	fclose(fp);
}
//输出:abc28

考查文件的读写。

注意:w打开文件时:如果文件不存在,则建立一个新文件,如果文件存在,文件中原有的内容全部消失a+打开文件时:表示原来的文件不删除,在文件尾部添加新的内容

在该题中“w”只读,但是第二次打开文件的方式是“a+”,第一次输出到文件中的数据会保留,并同时和第二次的文件操作一起输出。

第十二套28题

在这里插入图片描述

  • r只读出,w只写入(存储)。
  • fwrite()函数和fread()函数一次只能把一个数据写入或读出文件,当要读出多个数据放到不同的变量中取得时候,就要重复调用函数;而fprintf()函数和fscanf()函数则可以对不同的变量通过固定的格式写入或读出文件。选B

第十二套31题

在这里插入图片描述

32题

在这里插入图片描述

a为在文件后面添加数据而打开文本文件。这时如果指定的文件不存在,系统将用在fopen调用中指定的文件名建立一个新文件;如果指定的文件已存在,则文件中原有的内容将保存,新的数据写在原有内容之后。

a+功能与a相同,只是在文件尾部添加新的数据之后,可以从头开始读

第十三套14题

在这里插入图片描述

w为写而打开文本。如果指定的文件不存在,系统将用在fopen调用中指定的文件名建立一个新文件;如果指定的文件已存在,则将从文件的起始位置开始写,文件中原有的内容将全部消失。选C

第十七套39题

在这里插入图片描述

  • C语言中,有两种对文件的存取方式:顺序存取和直接存取
  • 在对文件进行操作后关闭文件是为了防止文件缓冲区中的剩余数据的丢失

40题

在这里插入图片描述

易错项:C

注意:数组ch包含:a,b,c,d,'\0’五个元素(‘\0’为系统自加的),执行fseek函数,文件类型指针fp从文件尾向前移动2个字符,即指针指向“c”,选B

第十八套37题

在这里插入图片描述

  • 由于原文件不存在,本题以w打开的方式直接新建了文件d1.dat
  • 然后通过for循环将数据a中的数据写到文件指针fp所指向的d1.dat文件中。
  • 接下来通过fscanf(fp,“%d”,&n);将fp指向的文件中的数据送给变量n,最终通过fprintf输出变量的值为123.选B
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值