文件在计算机的世界里非常非常的重要,特别是在Linux和Unix系统中,在Linux系统和Unix系统里把一切都当做了文件进行处理。鼠标、键盘、显示器等等都看着了一个文件进行处理。因此在学习C语言的过程中了解文件就显得尤为重要。
在进行文件操作的时候要把fopen和fclose当做两口子,他们俩一定要成对的出现,如果不是成对的出现你就是拆散别人两口子的坏人(凝视.jpg)
一、文件打开
注意:这里的打开文件并不是像我们用鼠标双击txt文件、exe文件那样打开。这里的打开是一个狭义的打开,可以理解为进入到这个文件里头去。
在这一部分还有一个很重要的东西就是文件指针,所以说掌握好指针在C语言中非常重要。在前面我们已经知道指针可以指向一个数组,指向一个变量,在这里我们要让一个指针指向文件,以实现对文件的操作。
以下程序就是打卡test.txt这个文件,如果test.txt不存在则程序会创建一个test.txt,如果test.txt存在那么就打开他。
#include<stdio.h>
int main()
{
FILE *fp;
fp = fopen("test.txt", "r");
if(fp == NULL)
printf("fail to open the file! \n");
else
{
printf("The file is open! \n");
fclose(fp);
}
return 0;
}
运行完了之后我的程序的文件夹下就多了一个test.txt了。因为我给了w+的权限。当然,这个test.txt里面是空的,啥也没有。
再强调一哈,这里的打开不得是打开成这个样子哈,这个叫打开一个记事本程序了。
二、文件写入
在上面我们说如果没有test.txt在给了足够的权限的情况下程序会创建一个test.txt文件。如果我们现在已经有了文件,但是里面是空的我们想要给存一点东西该怎么办呢?
这里就用到了fprintf和fputs这两个函数了。通过这两个函数实现对文件进行写入。注意,写完了之后一定要关闭文件,不要拆散别人两口子
#include <stdio.h>
int main()
{
FILE *p=fopen("test.txt","w+");
fprintf(p,"也许你会迷茫\n");
fputs("但是千万不要放弃",p);
fclose(p);
return 0;
}
我们现在打开test.txt文件就变成了这个样子。
三、文件读取
在上面我们给文件写入了内容,但是我们想要知道是什么还得从目录去打开记事本才能看到。那么我们能不能就像字符串这些一样就在我们的小黑窗里显示把他们一个一个儿的显示出来呢?肯定是可以滴。
#include <stdio.h>
int main()
{ FILE *p;
char c;
p=fopen("test.txt","r");
while((c=fgetc(p))!=EOF)
{
putchar(c);
}
putchar('\n');
fclose(p);
return 0;
}
运行结果
四、文件删除
哈哈哈,学完了文件的创建、写入、读取之后是不是觉得这玩意儿太扯dan了。没事,我们现在来学习怎么把它给删了。这里的文件删除是删除文件而不是删除文件里面的东西。
#include <stdio.h>
int main()
{
remove("test.txt");
return 0;
}
程序运行前
程序运行后
五、权限
模式 | 描述 |
---|---|
r | 打开一个已有的文本文件,允许读取文件。 |
w | 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。 |
a | 打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。 |
r+ | 打开一个文本文件,允许读写文件。 |
w+ | 打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。 |
a+ | 打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。 |
至读者:如果您在阅读的过程中发现文中有错误或不当之处望指正,感激不尽!