您现在的位置是:首页 > 编程 > 

对C语言文件初步认识与简介

2025-07-19 19:47:03
对C语言文件初步认识与简介 一·文件的分类与认识:首先我们要清楚我们写的文件存进去,可以按照普通的文本内容存进去还可以按照二进制的方式存进去。如果我们要想知道也就是说看到我们所写的内容是什么那么此时我们要写的就是文本内容,当然也可以写进去我们看不懂的二进制写法。二·文件的打开与关闭:1.这里我们来介绍一下如何打开以及关闭文件,打开文件的时候我们需要一个文件指针,接下来我们用代码来展示一下:代码语言

对C语言文件初步认识与简介

一·文件的分类与认识:

首先我们要清楚我们写的文件存进去,可以按照普通的文本内容存进去还可以按照二进制的方式存进去。如果我们要想知道也就是说看到我们所写的内容是什么那么此时我们要写的就是文本内容,当然也可以写进去我们看不懂的二进制写法。

二·文件的打开与关闭:

1.这里我们来介绍一下如何打开以及关闭文件,打开文件的时候我们需要一个文件指针,接下来我们用代码来展示一下:

代码语言:javascript代码运行次数:0运行复制
#define _CRT_SECURE_O_WARIGS
#include <stdio.h>
int main() {
	FILE* pf = fopen("", "w");//这里我们以写的形式打开这个文件,稍后会介绍到这些形式的具体
	if (pf == ULL) {//这里我们会看出来如果文件能被成功打开它会返回一个文件指针;否则就会返回空指针
		perror(fopen);//这里我们提示一下报的错误
	}
	fclose(pf);//关闭文件并且把pf置为空指针
	pf = ULL;
	return 0;
}
bd040da18c2898a529b19b96bd8c40d.png

这里我们就可以看到已经打开成功了。

三·文件一系列的读写函数介绍与使用:

下面我们就一一简单介绍一下这些有关文件的函数的应用:

1·fputc:

首先它是int fputc(int character,FILE*stream)我们来简单说说,它可以让我们输入东西,每当我们输入完东西,这个指针就会向后移动一个位置等待我们下次的输入 ;当我们输入到一定程度它就会返回EOF->-1;否则就会一直返回读取的字符。下面我们来演示一下:

代码语言:javascript代码运行次数:0运行复制
int main() {
	FILE* pf = fopen("", "w");
	if (pf == ULL) {
		perror(fopen);
		return 1;
	}
	for (char i = 'a'; i <= 'z'; i++) {
		fputc(i, pf);
	}
	fclose(pf);//关闭文件并且把pf置为空指针
	pf = ULL;
	return 0;
}
b0fd8d4ac7112b895c8874506febc99.png
d516a1e5178d1c9dec9ce4fc41480a22.png

这样的话我们就成功写入了;接下来大家肯定好奇怎么打印出来;那么下面就是我们下面一个函数要介绍的功能了。

2·fgetc:

来看一下完整的:int fgetc(FILE*stream):这里我们可以看出来我们是输入的一个文件指针,然后它能通过这个指针一次次移动把我们的内容打印出,它返回的数据跟fputc一样所以我们来演示一下它:

代码语言:javascript代码运行次数:0运行复制
int main() {
	FILE* pf = fopen("", "r");
	if (pf == ULL) {
		perror(fopen);
		return 1;
	}
 int ch = 0;
 printf("%c", ch = fgetc(pf));
	fclose(pf);//关闭文件并且把pf置为空指针
	pf = ULL;
	return 0;
}
da5d8a8cca68724c5a9ae6de18.png

这样我们就将第一个字符a打印出来,如果我们要是想打印整个文件的内容那要怎么办呢,当然这时我们就要利用它的返回值和循环了:

代码语言:javascript代码运行次数:0运行复制
int main() {
	FILE* pf = fopen("", "r");
	if (pf == ULL) {
		perror(fopen);
		return 1;
	}
	/*for (char i = 'a'; i <= 'z'; i++) {
		fputc(i, pf);
	}*/
	int ch = 0;
	 /*printf("%c", ch = fgetc(pf));*/
	while ((ch = fgetc(pf)) != EOF) {
		printf("%c", ch);
	}
	fclose(pf);//关闭文件并且把pf置为空指针
	pf = ULL;
	return 0;
}
6c1f1baf96941e529c018558f1e5166.png

这样的话我们就实现了;整个文件的所有内容也是如此的。

·fputs:

int fputs(ct char *str,FILE*stream);

下面还是展示代码:

代码语言:javascript代码运行次数:0运行复制
int main() {
	FILE* pf = fopen("", "w");
	if (pf == ULL) {
		perror(fopen);
		return 1;
	}
	char str[20] = "i\nlove\nyou";
		fputs(str, pf);
	fclose(pf);//关闭文件并且把pf置为空指针
	pf = ULL;
	return 0;
}
f5edc81abf806ef840649ad1c5d02b.png

这样的话我们就写文件完成了,当然我们也可以把str换成字符串效果也是一样的。

4·fgets:

char*fgets(char*str,int num,FILE*stream)

简单的说就是这个函数,我们从参数后面开始往前理解,那么就是,从文件中选取num个字符放到这个str指针所指向的数组中。还是老样子代码展示:

代码语言:javascript代码运行次数:0运行复制
char* str2[100] = { 0 };
fgets(str2, , pf);
printf("%s", str2);
fb8adfa19a5ab27dde9896ee4caf5b11.png

如果我们要想像fputc那样都能换行的打印出来该怎麽做呢:没错,我们还可以根据它的返回类型是指针来把它全部到:

代码语言:javascript代码运行次数:0运行复制
char* str2[100] = { 0 };

while (fgets(str2, , pf) != ULL) {
	printf("%s", str2);//这里我们每当打印完str2可认为它会自动清除,然后再一次while循环然后再次填入,当遇到文件末尾也就会返回空指针
}
f99f0bebcb96055c2097a671ddcf57e.png

这样的话我们也就把它全部打印出来了。

5·fprintf:

int fprintf(FILE*stream,ct *format,...);这个函数类似我们输入的printf函数,只是加了一个文件指针;后面就是类似于我们printf里面的内容;接下来展示代码:

代码语言:javascript代码运行次数:0运行复制
struct S {
	char name[100];
	int age;
	float score;

}s = { .name = "lisi",.age = 12,.score = 99.9 };
int main() {
	FILE* pf = fopen("", "w");
	if (pf == ULL) {
		perror(fopen);
		return 1;
	}
	fprintf(pf, "%s %d %f", , s.age, s.score);

	fclose(pf);//关闭文件并且把pf置为空指针
	pf = ULL;
	return 0;
}
fab2121b92abaee40a2a2cb0f6b54.png

用这个函数我,们可以简单的输入文件内一些格式化数据使它储存起来。

6·fscanf:

int (FILE*stream,ct char*format,...):这个也类似于我们的日常的scanf,还是用代码说明下一吧。

代码语言:javascript代码运行次数:0运行复制
struct S {
	char name[100];
	int age;
	float score;

}/*s = { .name = "lisi",.age = 12,.score = 99.9 };*/
t = { 0 };
int main() {
	FILE* pf = fopen("", "r");
	if (pf == ULL) {
		perror(fopen);
		return 1;
	}
fscanf(pf, "%s %d %f", , &(t.age), &(t.score));
printf("%s %d %f", , t.age, t.score);
	fclose(pf);//关闭文件并且把pf置为空指针
	pf = ULL;
	return 0;
}//这里我们把刚才fprint格式化输入的内容读取得到并给结构体变量t内的成员,然后再把它打印出来
4c654fa29859fefe800adf4d9c51.png
7·sprintf:

它的作用是是把所输入的信息数据放进对应的数组里并把它打印出来:

代码语言:javascript代码运行次数:0运行复制
char str1[100] = { 0 };
sprintf(str1, "mynane");
printf("%s", str1);
dba87192a210c702825426e0f00a.png

这里我们就把它放入数组内并打印出来了。

8·sscanf:

这里它也类似于scanf函数,我们相当于在他前面加了一个指针,后面跟scanf用的一样,大概解释一下,我们是把前面指针所指的数据放到后面规定放的地方,下面代码展示:

代码语言:javascript代码运行次数:0运行复制
char str1[100] = { 0 };
sprintf(str1, "mynane");
char str2[100] = { 0 };
sscanf(str1, "%s", str2);
printf("%s", str2);
4fdb8bd6beb8b2e752cd810e4da02b95.png

这里联合引用了sprintf函数,最终成功打印出来。

9·fwrite:

这个是我们把数据按照二进制的形式写入文件内,那么它保存的也就是我们看不懂的二进制形式,下面代码展示:

代码语言:javascript代码运行次数:0运行复制
	FILE* pf = fopen("", "wb");
	if (pf == ULL) {
		perror(fopen);
		return 1;
	}
	int arr[10] = { 1,1,2,,4,5 };
	int sz = sizeof(arr) / sizeof(int);
	fwrite(arr, sizeof(int), sz, pf);
	fclose(pf);
	pf = ULL;
	return 0;
f5816befa9a8dbf10cb1e27979749.png

这样的话我们就成功写入进去了。

10·fread:

这个函数就是让我们把从文件中读取的数据放在数组内,然后需要我们把它自行打印出来,将存进去的二进制位转化成我们可以看懂的形式。该函数内部形式与fwrite相似,下面还是我们代码展示:

代码语言:javascript代码运行次数:0运行复制
	FILE* pf = fopen("", "rb");
	if (pf == ULL) {
		perror(fopen);
		return 1;
	}
int arr1[10] = { 0 };
fread(arr1, sizeof(int), 4, pf);
for (int i = 0; i < 4; i++) {
	printf("%d", arr1[i]);
}
fclose(pf);
pf = ULL;

它的结果如下:

5bc7ad9d80947ad948005eddd555d.png

这一部分简单介绍就到这里吧,希望对大家有一些帮助。

四·文件的随机读写函数等:

1·下面我们来介绍一下随机读写函数fseek:下面展示以下代码:

代码语言:javascript代码运行次数:0运行复制
FILE* pf = fopen("", "r");
if (pf == ULL) {
	perror(fopen);
	return 1;
}
fseek(pf, 2, SEEK_SET);//这里我们会从起始指针位置开始向后偏移两个后在打印后面的一个字符
printf("%c", fgetc(pf));
fclose(pf);
pf = ULL;
return 0;
代码语言:javascript代码运行次数:0运行复制
	FILE* pf = fopen("", "r");
	if (pf == ULL) {
		perror(fopen);
		return 1;
	}
	fseek(pf, 2, SEEK_SET);
	fseek(pf, 2, SEEK_CUR);//这个和上一个配合使用相当于在上一个fseek执行完的后,在往后偏移两个再次打印;
printf("%c", fgetc(pf));
fclose(pf);
pf = ULL;
e55aa540d949d225bfa66ff897f2567.png

这里我们就成功打印出来了。

代码语言:javascript代码运行次数:0运行复制
fseek(pf, -1, SEEK_ED);
printf("%c", fgetc(pf));//这里我们四从后面开始向前偏移一个
ff7f74b9ad4057b60ad6a9df75d.png

下面我们展示一个恢复指针位置到起点的函数rewind:

代码语言:javascript代码运行次数:0运行复制
fseek(pf, -, SEEK_ED);
printf("%c\n", fgetc(pf));
printf("%d\n", ftell(pf));//这里ftell函数会告诉我们偏移了多少
rewind(pf);
printf("%d", ftell(pf));
cbd777fe25aa6d4b1469dcf47f84.png

2·接下来我们介绍一下判断文件读写完成的标志:就是feof:我们要向这里面传递个指针如果文件正常读写结束,他就会返回一;但是还有可能在我们读写的中间出现了一些错误那么我们就需要用ferror提示一下,下面展示代码:

代码语言:javascript代码运行次数:0运行复制
FILE* pf = fopen("", "r");
if (pf == ULL) {
	perror(fopen);
	return 1;
}
int ch = 0;
while ((ch = fgetc(pf))!=EOF) {
	printf("%c", ch);
}
printf("\n");
if (feof(pf)) {
	printf("正常读取结束");
}
else if (ferror(pf)) {
	printf("读取过程出现的问题");
}
fclose(pf);
pf = ULL;

这里他会正常读取完成:

51d95857428c62828c750dc5fc2e420d.png

那么我们就先介绍到这里,欲知后事如何,请听下回分解。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-08-08,如有侵权请联系 cloudcommunity@tencent 删除数组指针二进制函数数据

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1132315.html

相关标签:无
上传时间: 2025-07-18 20:24:17
留言与评论(共有 16 条评论)
本站网友 西药别名
25分钟前 发表
下面代码展示:代码语言:javascript代码运行次数:0运行复制char str1[100] = { 0 }; sprintf(str1
本站网友 人民币兑美元升值
23分钟前 发表
pf) != ULL) { printf("%s"
本站网友 芜湖宾馆
2分钟前 发表
"%s %d %f"
本站网友 防辐射的植物
9分钟前 发表
FILE*stream)我们来简单说说
本站网友 酒香不怕巷子深
24分钟前 发表
本站网友 李延
13分钟前 发表
那么它保存的也就是我们看不懂的二进制形式
本站网友 365茶坊
1分钟前 发表
将存进去的二进制位转化成我们可以看懂的形式
本站网友 浙江农林大学东湖论坛
6分钟前 发表
str1);dba87192a210c702825426e0f00a.png这里我们就把它放入数组内并打印出来了
本站网友 梦到找不到回家的路
2分钟前 发表
首先它是int fputc(int character
本站网友 commerce
29分钟前 发表
还是用代码说明下一吧
本站网友 松乔体检中心
30分钟前 发表
稍后会介绍到这些形式的具体 if (pf == ULL) {//这里我们会看出来如果文件能被成功打开它会返回一个文件指针;否则就会返回空指针 perror(fopen);//这里我们提示一下报的错误 } fclose(pf);//关闭文件并且把pf置为空指针 pf = ULL; return 0; }bd040da18c2898a529b19b96bd8c40d.png这里我们就可以看到已经打开成功了
本站网友 汽车销售排行榜
21分钟前 发表
2
本站网友 广元二手房网
27分钟前 发表
SEEK_SET); fseek(pf
本站网友 石狮婚纱摄影
26分钟前 发表
请听下回分解
本站网友 安徽萧县
1分钟前 发表
pf); } fclose(pf);//关闭文件并且把pf置为空指针 pf = ULL; return 0; }b0fd8d4ac7112b895c8874506febc99.pngd516a1e5178d1c9dec9ce4fc41480a22.png这样的话我们就成功写入了;接下来大家肯定好奇怎么打印出来;那么下面就是我们下面一个函数要介绍的功能了