C语言中的文件处理


文本文件与二进制文件

文本文件:
在文本文件中,数据是以字符序列的形式表示的,例如:整数357是‘3’,‘5’,‘7’,三个字符的序列,因此文本文件的字符数取决于数值位数
二进制文件:
在二进制文件中,数据是以二进制位串的形式表示的,它所占的内存大小根据定义的数据类型决定,因此二进制文件的字节数不依赖于数值位数

标准流

stdin—标准输入流

用于读取普通输入的流,在大多数环境下从键盘输入,scanf和getchar函数使用这个流

stdout–标准输出流

用于写入普通输出的流,printf ,puts ,putchar使用这个流

stderr–标准错误流

用于写出错误的流,在大多数环境中为输出至显示器界面

文本文件的一些函数

打开文件fopen

fopen函数会为要打开的文件新建一个流,然后返回一个指向FILE型对象的指针,即指向流的指针,通过该指针操作文件
在这里插入图片描述
打开文件时的四种模式:
只读模式:只从文件输入
只写模式:只向文件输出
更新模式:既从文件输入,也从文件输出
追加模式:从文件末尾开始向文件输出

关闭文件

在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
int main()
{
	FILE* fp;
	fp = fopen("12345.txt", "r");
	if (fp == NULL)
		printf("无法打开文件\"12345.txt\".\n");
	else
	{
		printf("成功的打开了文件\"12345.txt\".\n");
		fclose(fp);
	}
	return 0;
}

fscanf函数

fscanf函数可以对任何流执行scanf函数相同的输入操作,它只比scanf函数多了一个参数
例如:

fscanf( fp,"%d",&x);//从fp指向的流中读取
#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
int main()
{
	FILE* fp;	
	char name[100];
	double height, weight;
	if ((fp = fopen("12345.txt", "r")) == NULL)
		printf("文件打开失败\n");
	else
	{
		while (fscanf(fp, "%s%lf%lf", name, &height, &weight) == 3) {
			printf("%-10s%5.1f%7.1f\n", name, height, weight);
		}
		fclose(fp);
	}

	return 0;
}

注意事项:scanf和fscanf函数会返回读取到的项目数

写入日期和时间fprintf函数

简介:向任意流输出数据
和print函数的用法几乎相似,多了一个参数
例如:

fprintf(fp,"%d",x);//多了一个指向流的指针

获取当前时间和日期

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <time.h>
int main()
{
	FILE* fp;	
	time_t current = time(NULL);
	struct tm *timer = localtime(&current);
	if ((fp = fopen("12345.txt", "w")) == NULL)
		printf("打开文件失败\n");
	else
	{
		printf("写出当前日期和时间:\n");
		fprintf(fp, "%d %d %d %d %d %d \n",
			timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday,
			timer->tm_hour, timer->tm_min, timer->tm_sec
		);
		fclose(fp);
	}

	return 0;
}

显示文件内容和fgetc函数

这个函数与getchar类似,增加了一个输入流参数,从指定流中读取数据。
在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
int main()
{
	FILE* fp;	
	int ch;
	if ((fp = fopen("12345.txt", "r")) == NULL)
		printf("打开文件失败\n");
	else
	{
		while ((ch = fgetc(fp)) != EOF)
			putchar(ch);
		fclose(fp);
	}

	return 0;
}

文件的复制与fputc函数

fputc函数与putchar类似,将字符输出到指向的流。
在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
int main()
{
	FILE* sfp;	
	FILE* dfp;
	int ch;
	if ((sfp = fopen("12345.txt", "r")) == NULL)
		printf("打开原文件失败\n");
	else
	{
		if ((dfp = fopen("1234.txt", "w")) == NULL)
			printf("打开目标文件失败\n");
		else {
			while ((ch = fgetc(sfp)) != EOF)
				fputc(ch,dfp);
			fclose(dfp);
		}
		
		fclose(sfp);
	}

	return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值