关于文件操作的一些读写函数

    技术2026-04-02  8

    最近学习了关于文件操作的一些函数,顺手整理一下:

    1(打开 fopen 函数:它的作用就是打开一个你需要的文件,括号里面的一个参数,表示要打开的文件,第二个参数表示以什么形式打开,

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

    举个例子:

    FILE * pFile; pFile = fopen ("myfile.txt","w")

    就是指打开myfile这个文件,用写的形式打开。(假如文件夹里面没有这个文件,用'w'的形式打开,可以在文件夹下创建一个myfile文件。

    2(写入)fputs 一个可以往任何 文件中输出信息的接口

    它的作用就是通往特定的指针,打印其内容:

    int fputs ( const char * str, FILE * stream ); 第一个参数是你写的字符串是什么,第二个参数就是你想往哪里写 ;

    举个例子

    int main() { FILE *fp = fopen("log.txt", "w"); if (fp == NULL); { /* perror("fopen");*/ return 1; } fputs("abcd 1234", fp); fclose(fp); return 0; system("pause"); return 0; }

    注意”w''是清空式写入,就是说这一次的写入前会将之前的信息清空。

    3文件读取函数 主要分为文本读取,和二进制读取;

    1 文本读取: 

    1 fputc

    int fputc ( int character, FILE * stream );

    与上面的fputs一样,第一个参数是你想写入的内容,第二个参数是你想往那里写入;

    不过它的操作针对单个字符,输出这样的结果

    2 fgetc 就是从文件里获得字符

    它的返回值就是返回你要读取的字符,碰到EOF就表示已经读取到文件尾;

    3 fprintf()

    int fprintf ( FILE * stream, const char * format, ... );

    fprintf() 其实与printf()类似,也是输出,不过它是格式化输出,它的第一个参数是 你要把哪些输出的内容写到哪个文件上,第个参数就是输出的形式。

    举个例子:

     

    4 f scanf()

    int fscanf ( FILE * stream, const char * format, ... );

    是指从特定的文件格式化输入;第一个参数就是表示你数据源来自键盘还是文件;

    二进制读取函数:

    1fread 表示二进制读取(内容修改);

    size_fread ( void * ptr, size_t size, size_t count, FILE * stream )

    第四个参数代表本次读取想要从那里读,参数三代表读取的总字节大小,参数二表示一次读取的字节大小,参数一(指向一段缓冲区)代表你要读取的内容存放在哪里。它的返回值如果大于0 就表示读取成功。

    2  fwrite 表示二进制写入(内容修改)

    fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

    第一个参数代表你要写入的文件的起始地址,第二个参数代表一次写入的字节的大小,第三个参数表示要写入的总字节的大小,第四个参数表示你要往哪里写;它的返回值大于0 表示读取成功。

     

    3 fseek(属性修改)

    int fseek ( FILE * stream, long int offset, int origin )

    它的作用是:根据文件指针的位置和偏移量来定位文件指针(可以更改文件对应的读写位置)

    第一个参数表是你要改的文件指针,第二个文件读取时的偏移量,这个偏移量相对于第三个参数而言。

    第三个参数的取值有:

    分别文件的当前位置,目前指针所指向的文件位置,文件的节尾。

    4 ftell 属性修改)

    它的作用是 可以根据文件指针的位置和偏移量来定位文件指针。

    就是说我们将文件里的内容看作一行,利用文件指针可以看到具体偏移量。

    5 rewind

    作用就是让文件指针的位置回到起始位置。

    接下来举个列子将以上函数都使用一下,加深理解;

    #include<stdio.h> #include<windows.h> #pragma warning (disable:4996) int main() {//1open FILE *src = fopen("lena.png", "rb"); if (src == NULL) { perror("fopen"); return 1; } FILE *dst= fopen("lena_copy.png", "wb"); if (dst== NULL) { perror("fopen"); return 2; } //2 copy /*char buf[1024]; int n = 0; while ((n = fread(buf, 1, 1024, src)) > 0) { fwrite(buf, 1, n, dst); } if (feof(src)){ printf("read src fileend!\n "); }*/ fseek(src, 0, SEEK_END); int size = ftell(src); rewind(src); char*file_content = (char*)malloc(size); if (file_content == NULL) { perror("malloc"); return 3; } fread(file_content, size, 1, src); fwrite(file_content, 1, size, dst); //3 close fclose(src); fclose(dst); free(file_content); system("pause"); return 0; }

    结果:

    Processed: 0.010, SQL: 9