C语言知识------文件操作(文本文件)

本文详细介绍了C语言中如何以字符和字符串方式读写文件,包括fgetc/fputc、fgets/fputs,以及fprintf/fscanf的使用实例。涵盖了文件操作的基本模式和格式化输入输出技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件流简单的概念我就不多说了,想要了解的可以参考:C语言 文件操作相关概念_流楚丶格念的博客-优快云博客

目录

 

以字符的方式读

以字符的方式写
以字符串的方式读
以字符串的方式写
格式化写 fprintf
格式化写 fscanf

一.        以字符的方式读

代码如下:

//文件的英文是file
	//首先创建一个文件类型的指针fp fp可以理解为 file ptr
	FILE* fp;	
	//fopen函数是打开文件,返回类型是FILE* 类型的值
	//第一个参数是文件名,第二个是打开方式。
	//"r"类型:只读,文件不存在则打开文件失败
	//打开方式的表格在后文呈现
	fp = fopen("1.txt", "r");
	if (fp == NULL)
	{
		printf("文件打开失败\n");
	}
	//fp != NULL时 打开文件成功
	else
	{
		//在else里面对文件进行读的操作
		//fgetc函数是从文件里面读取一个字符 然后赋值给ch
		//参数为函数指针fp
		char ch = fgetc(fp);
		putchar(ch);

		//EOF  end  of  file  文件的尾部
		while (ch != EOF)
		{
			
			//当ch!= EOF时进入循环
			ch = fgetc(fp);		//文件的字符赋给ch
			putchar(ch);		//输出字符ch
		}
		//文件打开一定要关闭
		//使用fclose 函数   参数是文件指针fp
		fclose(fp);
		
	}

可以看到读取文件成功

 C语言文件操作模式表

 二.        以字符的方式写

代码如下:

FILE* fp;	
	fp = fopen("1.txt", "w");
	//判断一下文件是否打开
	if (fp == NULL)
	{
		printf("文件打开失败\n");
		return;
	}
	//文件的写入用函数fputc
	//这里我们写入一些字母
	for (int i = 0; i < 26; i++)
	{
		char ch = 'a' + i;
		//putc函数的第一个参数是 字符
		//第二个参数是文件指针
		putc(ch, fp);

	}
	
	fclose(fp);
		

 

三        以字符串的方式读

代码如下:

FILE* fp;	
	fp = fopen("1.txt", "r");
	//判断一下文件是否打开
	if (fp == NULL)
	{
		printf("文件打开失败\n");
		return;
	}
	
	
	//字符串的方式	fgets
	char buf[200];
	//fgets的第一个参数buf是保存从文件读出来的字符串的
	//200是buf的大小
	//fp 是文件指针,从fp中读入
	fgets(buf, 200, fp);

	puts(buf);
	fclose(fp);

这里我们把刚刚的26个字母读了出来,碰到换行就停止读取。

四        以字符串的方式写

代码如下:

FILE* fp;	
	fp = fopen("1.txt", "w");
	//判断一下文件是否打开
	if (fp == NULL)
	{
		printf("文件打开失败\n");
		return;
	}
	
	
	//字符串的方式	fputs
	char buf[200] = "Hello World\nsauidh";
	//参数1 要写入文件的字符串,
	//参数2 fp 写进fp中
	fputs(buf, fp);
	
	fclose(fp);

 文件里面的内容:

 

五        格式化写 fprintf

fprintf一般针对将结构体写入文件。

//定义一个结构体
	typedef struct Student 
	{
		int age;
		char name[20];
	}Student;

	FILE* fp;
	fp = fopen("1.txt", "w");
	//判断一下文件是否打开
	if (fp == NULL)
	{
		printf("文件打开失败\n");
		return;
	}

	Student s1 = { 18,"张三" };
	//fprintf与printf 的区别在于多了一个参数 
	//fp 写入到fp中去 
	//剩下两个和printf的参数用法一样
	fprintf(fp, " %d %s", s1.age, s1.name);
	fclose(fp);

 六        格式化写 fscanf

//定义一个结构体
	typedef struct Student 
	{
		int age;
		char name[20];
	}Student;

	FILE* fp;
	fp = fopen("1.txt", "r");
	//判断一下文件是否打开
	if (fp == NULL)
	{
		printf("文件打开失败\n");
		return;
	}

	Student s1 = { 0 };
	//fp 从fp的读
	fscanf(fp, "%d %s", &s1.age, s1.name);
	//在控制台上打、打印出s1的信息
	printf("%d %s", s1.age, s1.name);
	
	fclose(fp);
		
	

 

七        改变文件指针的位置

FILE* fp = fopen("1.txt", "w+");
	char name1[11] = "我是666";
	fputs(name1, fp);

	char name[100];
	//rewind(fp);	指针的移动到文件头
	fseek(fp, 2, SEEK_SET);	//指针从开头移动两个字节
	fgets(name,100,fp);
	puts(name);


	fclose(fp);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bloom_001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值