资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

【C语言】文件的基本读写操作等-创新互联

文件
  1. 打开文件
FILE *fp;
fp = fopen("test.txt", "r");	//以读的形式打开文本文件
if (fp == NULL)
{exit(0);
}
文本文件
	r 只读	r+ 读写
	w 只写	w+ 读写
			  a+ 读写尾部添加
二进制文件
	rb 只读		rb+ 读写
	wb 只写		wb+ 读写
	ab 尾部添加	  ab+ 读写尾部添加
  1. 关闭文件
fclose(fp);
  1. 字符方式的读写文件
char ch;

//写 - fputc()
ch = getchar();
while ( ch != '$' )
{fputc(ch,fp);	//把ch变量的字符值写往文件
	ch = getchar();	
}

//读	-fgetc()
ch = fgetc(fp);	//从文件里读取一个字符
while ( ch != EOF )	//判断文件是否读完,未完,则继续执行读操作
{putchar(ch);	//将字符送到屏幕
	ch = fgetc(fp);
}
putchar(10);	//换行
  1. 字符串读写文件
//读 - fgets()
char ch[41], *cp;

cp = fgets(ch, 41, fp);	//从文件中读取一行字符串,不得超过40字节(还有一个字节是'\0')
while ( cp != NULL )
{printf("%s", ch);
	cp = fgets(ch, 40, fp);
}

//写 - fputs()
char ch[5][41], *cp;
int i;
for ( i = 0; i< 0; i++ )
{gets(ch[i]);	//将一个字符串放到数组中
}
for ( i = 0; i< 5; i++ )
{fputs(ch[i], fp);	//将一个字符串写往文件
	fputs("\n", fp);	//在文本文件中换行
}
  1. 格式化方式读写文件
fscanf() 把从文本文件中读出的字符串按指定的格式转换为相应类型变量的值(不只是字符型)
fprintf() 把变量的值按指定的方式转化为文本写往文本文件
	fscanf(文本指针,格式控制字符串,输入项的地址列表);
		其返回值是事实上已赋值的变量的个数,如果未进行分配,则返回EOF
	fprintf(文本指针,格式控制字符串,输入项的列表);
		其返回值是正确写入文件的字节数,否则返回负数
int main(void)
{char name[9];
	FILE *fp;
	int age, i, num=0;
	float score;
	
	fp = fopen("student.txt", "w");	//以写的形式打开文件
	if ( fp == NULL )
		exit(0);
	
	for ( i = 0; i< 3; i++ )
	{printf("请输入学生_%d的姓名,年龄,成绩:", i+1);
		scanf("%s%d%f", name, &age, &score);
		fprintf(fp, "%s %4d %6.2f\n", name, age, score);	//将变量数据写往文件
	}
	fclose(fp);
	
	fp = fopen("student.txt", "r");	//以读的形式打开文件
	printf("从文件中读出的学生数据:\n");
	i = fscanf(fp, "%s%d%f", name, &age, &score);	//利用scanf的返回值来判断读是否成功
	while ( i == 3 )
	{printf("学生_%d的姓名,年龄,成绩:", ++num);
		printf("%s %4d %6.2f\n", name, age, score);	//将数据打印到屏幕上
		i = fscanf(fp, "%s%d%f", name, &age, &score);
	}
	fclose(fp);

	return 0;
}
  1. 数据块读写文件
数据块读写文件在读写过程中不对数据进行转换,直接在内存与文件之间进行数据拷贝;
	读写过程中不需考虑数据的性质和类型,只是简单对存储空间进行复制
	fread(buffer,size,count,fp);
	fwrite(buffer,size,count,fp);
	buffer:对应一个连续内存数据区的起始地址,通常是一个指针值
	size:欲复制的一个数据块的大小(字节数)
	count:本次欲复制多少个数据块
	fp:指向读写文件的文件指针
	
	int feof(FILE *fp)
	用于在进行读文件时,检测是否读写文件所有数据,如果文件结束,则返回非0值,反之返回0
	while (!feof(fp)) {}
int main(void)
{FILE *fp1, *fp2;
	char data;
	
	fp1 = fopen("stu.txt", "rb");
	fp2 = fopen("stu_copy.txt", "wb");
	if ( fp1 == NULL || fp2 == NULL )
		exit(0);
	
	fread(&data, sizeof(char), 1, fp1);	//读一个字节的内容给变量data
	while ( !feof(fp1) )
	{fwrite(&data, sizeof(char), 1, fp2); 	//将data的内容写到fp2
		fread(&data, sizeof(char), 1, fp1);
	}
	fclose(fp1);
	fclose(fp2);

	return 0;
}
  1. 文件的其他操作
fseek(),可以将文件位置指针移动到指定的位置
	int fseek(FILE *fp,long 位移量, int 起始点);
	起始点参数:0 文件开始位置; 1 文件当前位置; 2 文件末尾位置
	位移量: 值为正时,指针向后移动;值为负时,指针向前移动;若是long型,则100L
	
	rewind(FILE *fp) 是使文件的文件位置指针重新指向文件开始的位置
	
	fflush(stdin);	清空输入缓存区,保证下面的scanf()读新的循环条件
	
	ftell(FILE *fp) 用于获取文件位置指针当前值
	
	ferror(FILE *fp) 用于测试给定文件指针指向的文件信息区的错误标识符
	
	cleareer(FILE *fp) 使文件错误标志和文件结束标志置为0

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

创新互联长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为通辽企业提供专业的网站建设、网站设计,通辽网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
网站标题:【C语言】文件的基本读写操作等-创新互联
转载来源:http://cdkjz.cn/article/cechec.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220