C语言文件操作0基础保姆级教程_charch,2024-2024京东大数据开发面试真题解析

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

<返回值>一个文件指针

(打开方式mode表)

2.fclose

<功能>  关闭文件

<参数>  stream-文件指针

3.使用示范

#include<stdio.h>
#include<sting.h>
#include<errno.h>
int main()
{
	FILE*pw = fopen("test.txt","w");//打开的文件为“test.txt”      打开方式为“w”
    if(pw==NULL)//若打开失败则说明失败原因并结束进程
    {
        printf("%s",strerror(errno));//errno是全局错误变量  strerror将errno解析为错误原因
        return 0;
    }
	fclose(pw);//关闭文件
	pw = NULL;//将指针置为空,防止被误用
	return 0;
}

文件名相对/绝对路径

绝对路径:如c:\code\test.txt     包含文件路径  文件主干  文件后缀

相对路径:上图的表示就是相对路径,表示txt文件与源文件在同一路径下,若要表示上一路                    径,则用“…/”,一次类推上上路径就是“…/…/”

FILE*pw = fopen("../test.txt","w");

②fputc与fgetc

1.fputc——输出函数

<功能>将一个字符写入流中

<参数>c-输出的字符

<返回值>正常——返回输出的字符

错误——返回EOF

<适用>所有流

2.fgetc——输入函数

<功能>从流中读取一个字符

<返回值>int——返回输入的字符

EOF——发生错误或到达文件结尾

<适用>所有流

3.使用示范

#include <stdio.h>
#include <string.h>
#include<errno.h>
//fputc   输出一个字母
int main()
{
	FILE*pw = fopen("test.txt","w");
	if (pw == NULL)
	{
		printf("%s",strerror(errno));
		return 0;
	}
	fputc('b',pw);//将字符‘b’写入文件"test.txt"
	fclose(pw);
	pw = NULL;
	return 0;
}

//fgetc 读取一个字符,读取一个后文件指针往后偏移一位
int main()
{
	FILE*pr = fopen("test.txt","r");
	if (pr == NULL)
	{
		printf("%s",strerror(errno));
		return 0;
	}
	char ch = 0;//用ch接收输入的字符
	ch = fgetc(pr);//从文件"test.txt"中读取,读取一个字符后文件指针自动往后移一位
	fclose(pr);
	pr = NULL;
	printf("%c",ch);
	return 0;
}

4.对所有流的理解

什么是流:流是指信息从外部输入设备(如键盘)向计算机内部(如内存)输入和从内存                        向外部输出设备(显示器)输出的过程。

上述代码演示的是对文件流的操作,我们在用标准输入(stdin)输出(stdout)流演示一下

③fputs与fgets

1.fputs——输出函数

<功能>将字符串写入流中

<返回值>int——非负值表示成功

EOF——发生错误

<适用>所有流

2.fgets——输入函数

<功能>从流中获取字符串

<返回值>正常——返回字符串

NULL——表示错误或者到达文件结尾

<参数>n-从流中读取的最大字符数(\0会自动占去一位)

3.使用示范

#include <stdio.h>
#include <string.h>
#include<errno.h>
//fputs
int main()
{
	FILE*pw = fopen("test.txt","w");
	if (pw == NULL)
	{
		printf("%s",strerror(errno));
		return 0;
	}
	char ch[5] = "abcd";
	fputs(ch,pw);
	fclose(pw);
	pw = NULL;
	return 0;
}

//fgets
int main()
{
	FILE*pr = fopen("test.txt","r");
	if (pr == NULL)
	{
		printf("%s",strerror(errno));
		return 0;
	}
	char ch[5] = {0};
	fgets(ch,3,pr);//有一位自动被\0占用
	printf("%s",ch);
	return 0;
}

④fprintf与fscanf

1.fprintf——输出函数

<功能>将特定格式的数据写入流中

<返回值>返回打印的字节数。

<适用>所有流

<对比>printf默认将数据打印在标准输出流(stdout)上,而fprintf的输出流可以选择。printf             打印的字符数返回

2.fscanf——输入函数

<功能>从流中读取特定格式的数据

<适用>所有流

<返回值>返回成功转换和分配的字段数量

3.使用示范

//头文件同上略
//fprintf
int main()
{
	FILE*pw = fopen("test.txt","w");
	if (pw == NULL)
	{
		printf("%s",strerror(errno));
		return 0;
	}
	fprintf(pw,"%d %.2f %c",10,3.14,'a');
	fclose(pw);
	pw = NULL;
	return 0;
}

//fscanf
int main()
{
	int a; float b; char c;
	FILE*pr = fopen("test.txt","r");
	if (pr == NULL)
	{
		printf("%s",strerror(errno));
		return 0;
	}
	fscanf(pr,"%d %f %c",&a,&b,&c);
	printf("%d %.2f %c", a,b,c);
	return 0;
}

⑤fwrite与fread

1.fwrite——输出函数

<功能>将数据以二进制的形式写入文件流中

<参数>buffer-指向写入数据的指针    size-每一个元素的大小   count-写入的最大元素数

<返回值>实际写入的元素数

<适用>文件流

2.fread——输入函数

<功能>将数据以二进制的形式从文件流中读取

<返回值>实际读入的元素数

<适用>文件流

3.使用示范

//头文件同上略
//fwrite  fread
typedef struct stu
{
	int n;
	float score;
	char name[10];
}stu;

int main()
{
	stu s = {10,100.0,"张三"};
	FILE*pr = fopen("test.txt","rb");
	struct stu s1 = { 0 };
	if (pr == NULL)
	{
		printf("%s",strerror(errno));
		return 0;
	}
	//fwrite(&s,sizeof(stu),1,pw);
	fread(&s1,sizeof(stu),1,pr);
	fclose(pr);
	pr = NULL;
	return 0;
}

⑥fseek与ftell与rewind

1.fseek

<功能>将文件指针移到指定的位置

<参数>offset-偏移量        origin-初始化文件指针位置

origin有三种选择:SEEK_CUR 从当前位置开始

SEEK_END 从文件结尾开始

SEEK_SET从文件开头开始

<返回值>成功返回0,失败返回非0值

<注意>对文件指针的修改不可以通过p++的方式实先

使用演示(现已知记事本储存数据为“abcdef”)

//fseek
int main()
{
	FILE*pr = fopen("test.txt","r");
	int a = 0;
	if (pr == NULL)
	{
		printf("%s",strerror(errno));
		return 0;
	}
	//定位文件指针
	fseek(pr, -1, SEEK_END);//指向最后一个的后一个
	a=fgetc(pr);
    b=ftell(pr);//返回当前指针位置
	printf("%c",a);
    printf("%d",b);
	fclose(pr);
	pr = NULL;
	return 0;
}

(若初始化文件指针为SEEK_SET,偏移1则得到b)

2.ftell

<功能>返回当前文件指针的偏移量

3.rewind

<功能>使文件指针回到文件的开始

使用演示

int main()
{
	int n;
	FILE * pFile;
	char buffer[27];
	pFile = fopen("test.txt", "w+");
	for (n = 'A'; n <= 'Z'; n++)
		fputc(n, pFile);
	rewind(pFile);
	fread(buffer, 1, 26, pFile);
	fclose(pFile);
	buffer[26] = '\0';
	puts(buffer);
	return 0;
}

⑦ferror与feof

1.ferror

<功能>检查流是否发生了错误

<返回值>若发生错误则返回0,否则返回非0值

2.feof

<功能>当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束

<返回值>若不是文件末尾则返回0,是文件末尾则返回非0值

<注意>在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。
而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

g.cn/20211007184143811.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572F6ZqZLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)

<功能>当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束

<返回值>若不是文件末尾则返回0,是文件末尾则返回非0值

<注意>在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。
而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-A5vw7yYR-1713278449226)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值