C语言 ---- FILE文件操作

文件操作

C语言文件为流式文件,进行C语言文件的存取时,都会先进行“打开文件”操作,这个操作就是在打开数据流,而“关闭文件”操作就是关闭数据流。

读取文件

当进行文件读取时,不会直接对磁盘进行读取,而是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后程序再从缓冲区中读取所需数据,如下图所示:
在这里插入图片描述

写入文件

当写入文件时,并不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数据写入磁盘,如下图所示。
在这里插入图片描述

打开文件

fp = fopen("c:\\test.txt", "r") //由于反斜杠\是控制字符,所以必须再加一个反斜杠
使用fopen()函数打开的文件会先将文件复制到缓冲区。注意:所下达的读取或写入动作,都是针对缓冲区进行存取而不是磁盘,只有当使用fclose()函数关闭文件时,缓冲区中的数据才会写入磁盘。

文件打开模式
在这里插入图片描述

fgetc()函数的使用

字符读取函数fgetc()可从文件数据流中一次读取一个字符,然后读取光标移动到下一个字符,并逐步将文件的内容读出。
如果字符读取成功,则返回所读取的字符,否则返回EOF(end of file)。EOF是表示数据结尾的常量,真值为-1。另外,要判断文件是否读取完毕,可利用feof()进行检查。未完返回0,已完返回非零值。

例1:利用feof()函数检查文件是否读取完毕

#include <stdio.h>
main()
{
    FILE *fp;
    fp = fopen("c:\\temp\\test.txt", "r");
    if(fp != NULL)
    {
        while(!feof(fp))
        	printf("%c", fgetc(fp));
    }
    else
        printf("fail to open! \n");
    fclose(fp);
    return 0;
}

例2:利用文件结束标志EOF(即-1)

#include <stdio.h>
main()
{
    char ch;
    FILE *fp;
    if((fp = fopen("test.txt", "r")) != NULL)
        while((ch = fgetc(fp)) != EOF)
        	putchar(ch);
    else
        printf("fail to open! \n");
    fclose(fp);
    return 0;
}
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页