文件(基础版)

目录

1、流的概念

2、fopen

3、fclose


c语言中,个人感觉文件是一个很神奇的东西,因为他可以进行一些很神奇。下面就简单的介绍一下文件的分类和打开以及怎么往文件中写东西。

首先要想打开文件,必不可少的一个小知识,那就是,每个文件在打开的时候都会有一个文件信息区,它与文件是对应的,在修改文件的时候,它也会随之改变。而他的本质是一个结构体类型,类型名是FILE,千万要注意,这是结构体的类型名,不是变量名。要区分清楚。1、

1、流的概念

在C语言中,将在不同的输入/输出设备之间进行传递的数据抽象为“流”。个人理解这句话的意思就是输入和输出的地方不同了而已。打个比方说,如果你是从键盘输入的话,你就是属于标准的输入流,英文表示stdin,而在运行完程序时,如果选择让他输出在屏幕上,那就是标准输出流,英文表示是stdout。

2、fopen

在进行文件打开的时候,我们要用得到fopen

 这个函数的第一个参数,代表的就是流,表示的意思是你要打开哪个文件流(也就是你想要输入文件的名字),而第二个参数的意思就是打开这个文件的方式,用什么方法打开。而这个函数的返回类型就是我们开头说的FILE*类型。

注:在输入文件名时,有两种方式,一个是相对路径,一个是绝对路径。两者意义不同。

3、fclose

这个函数的意思是,你要关闭的文件,输入即可,如果打开的文件你没有关闭,后续再次向打开时,会打开失败,也就是打不开文件,所以,使用完一定要关闭。而这个函数的返回类型是int。根据他的返回值来判断这个文件是否关闭成功。我们看下面的这个测试代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	FILE* p = fopen("test", "w");
	int t = fclose(p);
	printf("%d", t);
	return 0;
}

 这段代码的意思就是,用“w”的方法打开一个名叫test的文件,然后关闭这个文件,然后我定义了一个int类型的变量,运行之后的结果是

关闭成功,返回的是0。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	FILE* p = NULL;
	int t = fclose(p);
	printf("%d", t);
	return 0;
}

 我们给FILE*类型的指针赋值成NULL,然后关闭这个文件,此时就会出现错误,因为他没有打开文件,在关闭p所指的文件时,就会出现错误,实际上返回的是EOF。所以,当关闭失败或是出现错误的时候会返回EOF。

4、fgetc、fputc

fgetc:这个函数表示的是你从文件当中读取一个字符,返回类型是int

fputc:这个函数表示的是往文件中输入一个字符

话不多说,我们来上代码来理解

int main()
{
	FILE* p = fopen("test", "w");
	fputc('p', p);//在test文件中,写一个字符p
	//int ch = fgetc(p);
	//printf("%d", ch);
	fclose(p);
	return 0;
}

我用"w"的方式写入了一个p的字符,然后我们可以看下这个文件中的内容是否有p

我们可以看到,文件中有了字符p,表示我们已经在文件中写入成功。

接着,我们看一下这段代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	FILE* p = fopen("test", "r");
	//fputc('p', p);//在test文件中,写一个字符p
	int ch = fgetc(p);
	printf("%c", ch);
	fclose(p);
	return 0;
}

 这段代码的意思就是,读取test这个文件的一个字符,并且输出到屏幕上。我们来看看运行结果

我们可以看到这个文件的第一个字符。

最后,fgets,fputs,fscanf,fprintf,个人认为本质上跟fgetc,fputc的差不多,就是这几个函数的参数以及返回类型有所不同,所以,我们可以举一反三,学习下这几个函数。

最后,如果你学到了的话,希望大家可以点一下赞,支持一下!!谢谢! 

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值