动态 版块 发帖 消息 我的
小绿叶技术博客
小绿叶技术博客
小绿叶技术Lv150   
c 语言文件读写, 文件修改     



C 库函数 - fopen()

C 标准库 - <stdio.h> C 标准库 - <stdio.h>

描述

C 库函数 FILE *fopen(const char *filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。

声明

下面是 fopen() 函数的声明。

FILE *fopen(const char *filename, const char *mode)

参数

  • filename -- 字符串,表示要打开的文件名称。
  • mode -- 字符串,表示文件的访问模式,可以是以下表格中的值:
模式描述
"r"打开一个用于读取的文件。该文件必须存在。
"w"创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。
"a"追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。
"r+"打开一个用于更新的文件,可读取也可写入。该文件必须存在。
"w+"创建一个用于读写的空文件。
"a+"打开一个用于读取和追加的文件。

返回值

该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。







#include <stdio.h>

int main(){   

    FILE *fp = NULL;

// 定义一个指针变量,默认为空,指针变量格式星号开头


    fp = fopen("test.txt", "r+");                            

// 指针变量为  fopen 打开一个文件 指定文件名和打开模式函数:r 读取


    fprintf(fp, "This is testing for fprintf...\n");   

// 将字符串写入文件:$fp 是 test.txt


    fseek(fp, 10, SEEK_SET);

    if (fputc(65,fp) == EOF) {

        printf("fputc fail");   

    }   

    fclose(fp);

}



fseek 可以移动文件指针到指定位置读,或插入写:


int fseek(FILE *stream, long offset, int whence);

fseek 设置当前读写点到 offset 处, whence 可以是 SEEK_SET,SEEK_CUR,SEEK_END 这些值决定是从文件头、当前点和文件尾计算偏移量 offset。


你可以定义一个文件指针 FILE *fp,当你打开一个文件时,文件指针指向开头,你要指到多少个字节,只要控制偏移量就好,例如, 相对当前位置往后移动一个字节:fseek(fp,1,SEEK_CUR); 中间的值就是偏移量。 如果你要往前移动一个字节,直接改为负值就可以:fseek(fp,-1,SEEK_CUR)。


执行以下实例前,确保当前目录下 test.txt 文件已创建:

注意: 只有用 r+ 模式打开文件才能插入内容,w 或 w+ 模式都会清空掉原来文件的内容再来写,a 或 a+ 模式即总会在文件最尾添加内容,哪怕用 fseek() 移动了文件指针位置。



 0  已被阅读了441次  楼主 2022-05-09 12:03:26
回复列表

回复:c 语言文件读写, 文件修改

guest
登录之后更精彩~
Powered by HadSky 7.7.16
© 2015-2023 PuYueTian
您的IP:127.0.0.1,2023-03-25 19:10:01,Processed in 0.01146 second(s).
Powered by HadSky
小绿叶技术博客