目录
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的差不多,就是这几个函数的参数以及返回类型有所不同,所以,我们可以举一反三,学习下这几个函数。
最后,如果你学到了的话,希望大家可以点一下赞,支持一下!!谢谢!