关于文件操作符看这篇就够了#函数精讲

目录

fopen函数和fclose函数 

fputc函数

fgetc函数

 fgets函数

fputs函数

 fprintf函数

fscanf函数

sscanf函数与sfrintf函数

fseek函数

ftll函数与rewind函数

feof函数与ferror函数

fopen函数和fclose函数

ANSIC规定使用fopen函数来打开文件,fclose来关闭文件。

如何用看这张图:

d906e934a4ea464eae0a4503e01deb4b.png  要注意的是指定写入文件名有两种写法,一个是相对路径,一个是绝对路径。

绝对路径:一定是从硬盘的名字开始写的,比如fopen("C:2023_wpk\\test._1_2\\test.txt","r");

相对路径:  两个点开始..表示上一级路径,比如fopen("../../test.txt","r"); 

一个点开始.表示当前路经,比如fopen("test.txt","r");

写入方式一共有十种,这里介绍的是“r”(只读),有兴趣了解其他的可以看我的另一篇文章,链接:http://t.csdn.cn/nZY2t

现在开始以“r”为例,用代码示范:

#define _CRT_SECURE_NO_WARNINGS 1
#include<errno.h>
#include<string.h>
#include<stdio.h>
int main()
{

	//读文件
	FILE* q = fopen("teat.txt", "r");
	char arr[1024] = { 0 };
	if (q == NULL)
	{
		//文件不存在报错
		printf("%s\n", strerror(errno));
	}
	//关闭文件
	fclose(q);
	q = NULL;//文件置空
	return 0;
}

fputc函数

fputc是进行写文件

        //写入
        fputc('b', q);

向p中写入一个字符b,这里的q是文件指针,写入的字符要用' '括起来。

 fgetc函数

 printf("%c",fgetc(p));

解释:fgetc(p)从p这个流里读一个字符,用printf打印。

int arr = fgetc(stdin);

fputc(arr,stdout);

从stdin里读,输出到stdout屏幕上去。

 fgets函数

 

    fgets(arr, 1024, q); 

arr是数组,q是一个流,从q流里读最大1024个字符到arr数组中。

fputs函数 

fputs("hello",p);

fputs("hello\n",p);

写一个字符串hello到p流中。后面加\n就是换行写入。

 fprintf函数

比较说明:

  fprintf与printf不同的是它可以指定除了标准流输出以外,也可以指定不同流输出。也就是可以输出到其他地方,指定输出。

fscanf函数

fscanf与scanf同的是它可以指定除了标准流写入以外,也可以指定不同流写入,也就是可以写入到其他地方,指定写入。

sscanf函数与sfrintf函数

sprintf(q,"%d %f %s",a.a,a.d,a.s);//输出在变量数组中
sprintf(输出地,% 输出方式,获取地);//输出在变量数组中

sscanf(q,"%d %f %s",&(z.a), &(z.d), &(z.s));//写入在变量数组中(字符串)

sscanf(写入地,% 写入方式,获取地);//写入在变量数组中

fseek函数

fseek定位文件指针读写:

    //fseek(地址,偏移量,文件指针的位置)
    fseek(p, 2, SEEK_CUR);//负数向前偏移

值得注意的是:

//SEEK_CUR文件指针的当前位置
//SEEK_END文件的末尾位置
//SEEK_SETA文件起始位置 

ftll函数与rewind函数

    //ftell返回文件指针相对起始指针的偏移量
    int ch =ftell(p);
    //rewind让文件指针回恢复到起始位置
    rewind(p);

feof函数与ferror函数

//feof找文件结束的原因
//ferror测试流上的错误

如何使用:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	FILE* p = fopen("teat.txt", "r");
	if (p == NULL)
	{
		perror("open file teat.txt");
		return 0;
	}
	int ch = 0;
	//fgetc 当读取失败的时候或者遇到文件结束的时候,都会返回EOF
	while (ch = fgetc(p) != EOF)
	{
		putchar(ch);
	}
	//判断读取结束的原因
	if (ferror(p)) {
		printf("error");
	}
	else if (feof(p)) {
		printf("end of file");
	}
}

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

19岁尚未秃 顶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值