精华内容
下载资源
问答
  • c语言读取文件
    万次阅读 多人点赞
    2019-04-21 22:20:38

    一:打开文件句柄

    //参数1:文件路径

    //参数2:文件打开模式

    函数执行成功返回文件流指针,错误返回NULL。

    FILE *fopen(const char *path, const char *mode);

     

    模式               操作              区别                   文件要求

    r                      读            从文件头开始        文件需存在

    r+                  读写          从文件头开始        文件需存在

    w                    写            从文件头开始        文件不存在则创建,存在则清空

    w+                 读写         从文件头开始         文件不存在则创建,存在则清空

    a                     写           从文件尾开始         文件不存在进行创建,存在则追加

    a+                 读写         从文件头读取,从文件尾写入       文件不存在进行创建,存在则追加

     

    代码示例:

    #include <stdio.h>
    
    int main()
    {
        FILE *p = fopen("/tmp/1.txt", "r");
        if(p == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        fclose(p);
        return 0;
    }

     

    二:文件关闭

    //参数1:文件流

    int fclose(FILE *fp);

     

    三:文件写入

    1、字符写入:fputc();

    //参数1:写入的字符

    //参数2:文件流

    //作用:将单个字符写入到文件中

    //返回值:成功时,返回写入字符的ascii码值,错误返回EOF(-1)

    int fputc(int c, FILE *stream);

     

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "w");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!";
        int i;
        for(i = 0; i < strlen(name); i++)
        {
            fputc(name[i], file);
        }
        fputc('\n', file);
        fclose(file);
        return 0;
    }

     

    2、字符串写入:fputs();

    //参数1:写入的字符串

    //参数2:文件流

    //作用:将字符串写入文件中

    //返回值:返回一个非负值,如果发生错误则返回 EOF(-1)。

    int fputs(const char *s, FILE *stream);

     

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "w");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!\n";
        fputs(name, file);
        fclose(file);
        return 0;
    }

     

    3、数据块写入:fwrite();

    //参数1:要获取的数据的地址

    //参数2:要写入内容的单字节数

    //参数3:要写入size字节的数据项的个数

    //参数4:目标文件指针

    //返回值:返回实际写入的数据块的数目

    //作用:向文件写入数据块,以二进制形式对文件进行操作,不局限于文本文件。

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

     

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "wb+");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!\n";
        fwrite(name, strlen(name), 1, file);
        fclose(file);
        return 0;
    }

     

    4、格式化写入:fprintf();

    //参数1:目标文件指针

    //参数2:指定的格式控制字符串

    //参数3:各种输出项,与格式控制字符串中的字段一起写到文件中

    //返回值:执行成功返回实际写入文件的字符个数;执行失败,返回负数

    //作用:用来将输出项按指定的格式写入到指定的文本文件中。

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

     

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "wb+");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!\n";
        fprintf(file, "this is %s\n", name);
        fclose(file);
        return 0;
    }

    四:文件读取

    1、字符读取:fgetc()

    //参数1:目标文件指针

    //返回值:执行成功返回读取的字符,读取错误或者遇到结束标志EOF,返回EOF

    //作用:从指定的文件中读取一个字符

    int fgetc(FILE *stream);

     

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char c;
        while((c = fgetc(file)) != EOF)
        {
            printf("%c", c);
        }
        fclose(file);
        return 0;
    }

    2、字符串读取:fgets()

    //参数1:存储读取的数据

    //参数2:存储数据的大小

    //参数3:要读取的文件流

    //返回值:成功则返回读取的buf,失败则返回NULL,这是,buf中的数据不确定

    //作用:读取指定场长度的字符串存到字符数组中。每次只读取一行,每次最多读bufsize-1个字符(第bufsize个字符赋'\0')

    char *fgets(char *buf, int bufsize, FILE *stream);

     

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char buf[1024] = {0};
        while(fgets(buf, 1024, file) != NULL)
        {
            printf("%s", buf);
        }
        fclose(file);
        return 0;
    }

    3、数据块读取:fread()

    //参数1:存储读取的数据

    //参数2:要读取的每个数据项的字节数

    //参数3:要读取的数据项的个数

    //参数4:读取的文件流

    //返回值:返回真实读取的数据项count数,错误时返回0

    //作用:一次读取文件中由若干个数据项组成的数据块,数据块的大小取决于数据项的大小和数据项的个数。

    size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;

     

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("./test", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char buf[102400] = {0};
        fread(buf, 1024, 100, file);
        printf("%s", buf);
        fclose(file);
        return 0;
    }

     

    4、格式化读取:fscanf()

    //参数1:读取的文件流

    //参数2:读取的字符格式

    //参数3:读取的各个输入项

    //返回值:成功则返回读入的参数个数,失败返回EOF

    //作用:根据数据格式format从文件流中读取数据,遇到空格或换行结束。

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

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char buf[1024] = {0};
        fscanf(file, "%s", buf);
        printf("%s\n", buf);
        fclose(file);
        return 0;
    }

     

    五:文件读写结合

    1、fgetc()与fputc()结合使用

    //以字符格式读取文件,再以字符格式写入文件,适用于文本文件

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char c;
        while( (c = fgetc(file)) != EOF )
        {
            fputc(c, fp);
        }
        fclose(file);
        fclose(fp);
        return 0;
    }

     

    2、fgets()与fputs()结合使用

    //从文件中按行读取字符串,再以字符串写入文件,适用于文本文件,优点是按行读取很方便

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char buf[1024] = {0};
        while(fgets(buf, 1024, file) != NULL)
        {
            fputs(buf, fp);
        }
        fclose(file);
        fclose(fp);
        return 0;
    }

     

    3、fread()与fwrite()结合使用

    //以数据块格式读取,再以数据块格式写入到文件中,可以读取二进制文件,优点是读取二进制文件使用

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char buf[1024] = {0};
        fread(buf, 1024, 1, file);
        fwrite(buf, strlen(buf), 1, fp);
        fclose(file);
        fclose(fp);
        return 0;
    }

    4、fprintf()与fscanf()结合使用

    //以格式化的方式读取,遇到空格或换行就结束,再将读取的文件写入到文件中,优点是可以指定写入的文件格式

    示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char buf[1024] = {0};
        fscanf(file, "%s", buf);
        fprintf(fp, "aaa:%s", buf);
        fclose(file);
        fclose(fp);
        return 0;
    }

     

    参考:

    https://www.cnblogs.com/maluning/p/7955750.html

    https://blog.csdn.net/songbook/article/details/79686322

     

     

    更多相关内容
  • C语言读取文件

    2016-06-14 22:41:05
    c语言文件操作,详细的给出了如何读取文本文件数据,以及存储数据到另外的文件
  • C语言 读取文件

    2017-11-28 23:07:48
    该代码采用C语言编程,通过文件路径读取文本文件,并保存在数组中。
  • 如何用C语言读写文件

    千次阅读 2021-05-25 06:13:42
    c语言读写文件程序:#include "stdio.h"#include main(){FILE *fp1;//定义文件流指针,用于打开读取的文件FILE *fp2;//定义文件流指针,用于打开写操作的文件char text[1024];//定义一个字符串数组,用于存储读取的...

    c语言读写文件程序:

    #include "stdio.h"

    #include

    main()

    {

    FILE *fp1;//定义文件流指针,用于打开读取的文件

    FILE *fp2;//定义文件流指针,用于打开写操作的文件

    char text[1024];//定义一个字符串数组,用于存储读取的字符

    fp1 = fopen("d:\\a.txt","r");//只读方式打开文件a.txt

    fp2 = fopen("d:\\b.txt","w");//写方式打开文件a.txt

    while(fgets(text,1024,fp1)!=NULL)//逐行读取fp1所指向文件中的内容到text中

    {

    puts(text);//输出到屏幕

    fputs(text,fp2);//将内容写到fp2所指向文件中

    }

    fclose(fp1);//关闭文件a.txt,有打开就要有关闭

    fclose(fp2);//关闭文件b.txt

    }

    78cdd8ebbd0ba8c5fa48234a4d838f13.png扩展资料:

    C语言文件读写操作总结

    一.非标准文件的读写 不带缓冲的

    1.文件的打开和关闭

    open()函数的作用是打开文件,其调用格式为: int open(char *filename, int access); 该函数表示按access的要求打开名为filename的文件,返回值为文件描述字,其中access有两部分内容: 基本模式和修饰符, 两者用" "("或")方式连接,修饰符可以有多个, 但基本模式只能有一个。

    access的规定

    O_RDONLY 只读

    O_APPEND 文件指针指向末尾

    O_WRONLY 只写

    O_CREAT 文件不存在时创建文件, 属性按基本模式属性

    O_RDWR 读写

    O_BINARY 打开一个二进制文件

    O_TEXT 打开一个文字文件

    open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。 close()函数的作用是关闭由open()函数打开的文件, 其调用格式为: int close(int handle); 该函数关闭文件描述字handle相连的文件。

    2.读写函数

    int read(int handle, void *buf, int count);

    read()函数从handle(文件描述字)相连的文件中, 读取count个字节放到buf所指的缓冲区中, 返回值为实际所读字节数, 返回-1表示出错。返回0 表示文件结束。

    write()函数的调用格式为: int write(int handle, void *buf, int count); write()函数把count个字节从buf指向的缓冲区写入与handle相连的文件中, 返回值为实际写入的字节数。

    3.随机定位函数

    lseek()函数的调用格式为: int lseek(int handle, long offset, int fromwhere);

    该函数对与handle相连的文件位置指针进行定位,功能和用法与fseek()函数相同。 tell()函数的调用格式为: long tell(int handle); 该函数返回与handle相连的文件现生位置指针, 功能和用法与ftell()相同

    二、标准文件的读写

    1.文件的打开函数fopen()

    文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。

    当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头。若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头。

    fopen(char *filename,char *type);

    其中*filename是要打开文件的文件名指针,一般用双引号括起来的文件名表示,也可使用双反斜杠隔开的路径名。

    而*type参数表示了对打开文件的操作方式。其可采用的操作方式如下:

    "r" 打开,只读; "w" 打开,文件指针指到头,只写; "a" 打开,指向文件尾,在已存在文件中追加; "rb" 打开一个二进制文件,只读; "wb" 打开一个二进制文件,只写; "ab" 打开一个二进制文件,进行追加 ;

    "r+" 以读/写方式打开一个已存在的文件; "w+" 以读/写方式建立一个新的文本文件 ;"a+" 以读/写方式打开一个文件文件进行追加 ;"rb+" 以读/写方式打开一个二进制文件; "wb+" 以读/写方式建立一个新的二进制文件 ;

    "ab+" 以读/写方式打开一个二进制文件进行追加 ;当用fopen()成功的打开一个文件时,该函数将返回一个FILE指针,如果文件打开失败,将返回一个NULL指针。

    展开全文
  • C语言编程,连接数据库有点麻烦,但测试总需要数据,使用手动输入的方式固然是可行的,但是在开发过程中难免会重复使用同样的数据进行测试,而且输入测试数据的过程中花费的时间会很多,所以我们要学会变通,通过...
  • C语言读写文件函数

    2022-02-26 21:11:01
    一:打开文件句柄 //参数1:文件路径 //参数2:文件打开模式 函数执行成功返回文件流指针,错误返回NULL。 FILE *fopen(const char *path, const char *mode);...模式 操作 区别 文件要求 ...r+ 读写 ...

    一:打开文件句柄

    //参数1:文件路径

    //参数2:文件打开模式

    函数执行成功返回文件流指针,错误返回NULL。

    FILE *fopen(const char *path, const char *mode);

    模式               操作              区别                   文件要求

    r                      读            从文件头开始        文件需存在

    r+                  读写          从文件头开始        文件需存在

    w                    写            从文件头开始        文件不存在则创建,存在则清空

    w+                 读写         从文件头开始         文件不存在则创建,存在则清空

    a                     写           从文件尾开始         文件不存在进行创建,存在则追加

    a+                 读写         从文件头读取,从文件尾写入       文件不存在进行创建,存在则追加

    代码示例:

    #include <stdio.h>
     
    int main()
    {
        FILE *p = fopen("/tmp/1.txt", "r");
        if(p == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        fclose(p);
        return 0;
    }
     

    二:文件关闭

    //参数1:文件流

    int fclose(FILE *fp);

    三:文件写入

    1、字符写入:fputc();

    //参数1:写入的字符

    //参数2:文件流

    //作用:将单个字符写入到文件中

    //返回值:成功时,返回写入字符的ascii码值,错误返回EOF(-1)

    int fputc(int c, FILE *stream);

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "w");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!";
        int i;
        for(i = 0; i < strlen(name); i++)
        {
            fputc(name[i], file);
        }
        fputc('\n', file);
        fclose(file);
        return 0;
    }
     

    2、字符串写入:fputs();

    //参数1:写入的字符串

    //参数2:文件流

    //作用:将字符串写入文件中

    //返回值:返回一个非负值,如果发生错误则返回 EOF(-1)。

    int fputs(const char *s, FILE *stream);

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "w");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!\n";
        fputs(name, file);
        fclose(file);
        return 0;
    }
     

    3、数据块写入:fwrite();

    //参数1:要获取的数据的地址

    //参数2:要写入内容的单字节数

    //参数3:要写入size字节的数据项的个数

    //参数4:目标文件指针

    //返回值:返回实际写入的数据块的数目

    //作用:向文件写入数据块,以二进制形式对文件进行操作,不局限于文本文件。

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

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "wb+");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!\n";
        fwrite(name, strlen(name), 1, file);
        fclose(file);
        return 0;
    }
     

    4、格式化写入:fprintf();

    //参数1:目标文件指针

    //参数2:指定的格式控制字符串

    //参数3:各种输出项,与格式控制字符串中的字段一起写到文件中

    //返回值:执行成功返回实际写入文件的字符个数;执行失败,返回负数

    //作用:用来将输出项按指定的格式写入到指定的文本文件中。

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

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "wb+");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!\n";
        fprintf(file, "this is %s\n", name);
        fclose(file);
        return 0;
    }
    四:文件读取

    1、字符读取:fgetc()

    //参数1:目标文件指针

    //返回值:执行成功返回读取的字符,读取错误或者遇到结束标志EOF,返回EOF

    //作用:从指定的文件中读取一个字符

    int fgetc(FILE *stream);

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char c;
        while((c = fgetc(file)) != EOF)
        {
            printf("%c", c);
        }
        fclose(file);
        return 0;
    }

    2、字符串读取:fgets()

    //参数1:存储读取的数据

    //参数2:存储数据的大小

    //参数3:要读取的文件流

    //返回值:成功则返回读取的buf,失败则返回NULL,这是,buf中的数据不确定

    //作用:读取指定场长度的字符串存到字符数组中。每次只读取一行,每次最多读bufsize-1个字符(第bufsize个字符赋'\0')

    char *fgets(char *buf, int bufsize, FILE *stream);

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char buf[1024] = {0};
        while(fgets(buf, 1024, file) != NULL)
        {
            printf("%s", buf);
        }
        fclose(file);
        return 0;
    }
    3、数据块读取:fread()

    //参数1:存储读取的数据

    //参数2:要读取的每个数据项的字节数

    //参数3:要读取的数据项的个数

    //参数4:读取的文件流

    //返回值:返回真实读取的数据项count数,错误时返回0

    //作用:一次读取文件中由若干个数据项组成的数据块,数据块的大小取决于数据项的大小和数据项的个数。

    size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./test", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char buf[102400] = {0};
        fread(buf, 1024, 100, file);
        printf("%s", buf);
        fclose(file);
        return 0;
    }
     

    4、格式化读取:fscanf()

    //参数1:读取的文件流

    //参数2:读取的字符格式

    //参数3:读取的各个输入项

    //返回值:成功则返回读入的参数个数,失败返回EOF

    //作用:根据数据格式format从文件流中读取数据,遇到空格或换行结束。

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

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char buf[1024] = {0};
        fscanf(file, "%s", buf);
        printf("%s\n", buf);
        fclose(file);
        return 0;
    }
     

    五:文件读写结合

    1、fgetc()与fputc()结合使用

    //以字符格式读取文件,再以字符格式写入文件,适用于文本文件

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char c;
        while( (c = fgetc(file)) != EOF )
        {
            fputc(c, fp);
        }
        fclose(file);
        fclose(fp);
        return 0;
    }

    2、fgets()与fputs()结合使用

    //从文件中按行读取字符串,再以字符串写入文件,适用于文本文件,优点是按行读取很方便

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char buf[1024] = {0};
        while(fgets(buf, 1024, file) != NULL)
        {
            fputs(buf, fp);
        }
        fclose(file);
        fclose(fp);
        return 0;
    }

    3、fread()与fwrite()结合使用

    //以数据块格式读取,再以数据块格式写入到文件中,可以读取二进制文件,优点是读取二进制文件使用

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char buf[1024] = {0};
        fread(buf, 1024, 1, file);
        fwrite(buf, strlen(buf), 1, fp);
        fclose(file);
        fclose(fp);
        return 0;
    }

    4、fprintf()与fscanf()结合使用

    //以格式化的方式读取,遇到空格或换行就结束,再将读取的文件写入到文件中,优点是可以指定写入的文件格式

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char buf[1024] = {0};
        fscanf(file, "%s", buf);
        fprintf(fp, "aaa:%s", buf);
        fclose(file);
        fclose(fp);
        return 0;
    }
     
     

    展开全文
  • C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块)。本节介绍以字符形式读写文件。 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中...
  • 一:打开文件句柄 //参数1:文件路径 //参数2:文件打开模式 函数执行成功返回文件流指针,错误返回NULL。 FILE *fopen(const char *path, const char *mode);   模式           &...

    一:打开文件句柄

    //参数1:文件路径

    //参数2:文件打开模式

    函数执行成功返回文件流指针,错误返回NULL。

    FILE *fopen(const char *path, const char *mode);

    模式 操作 区别 文件要求

    r 读 从文件头开始 文件需存在

    r+ 读写 从文件头开始 文件需存在

    w 写 从文件头开始 文件不存在则创建,存在则清空

    w+ 读写 从文件头开始 文件不存在则创建,存在则清空

    a 写 从文件尾开始 文件不存在进行创建,存在则追加

    a+ 读写 从文件头读取,从文件尾写入 文件不存在进行创建,存在则追加

    代码示例:

    #include <stdio.h>
     
    int main()
    {
        FILE *p = fopen("/tmp/1.txt", "r");
        if(p == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        fclose(p);
        return 0;
    }
    

    二:文件关闭

    //参数1:文件流

    int fclose(FILE *fp);

    三:文件写入

    1、字符写入:fputc();

    //参数1:写入的字符

    //参数2:文件流

    //作用:将单个字符写入到文件中

    //返回值:成功时,返回写入字符的ascii码值,错误返回EOF(-1)

    int fputc(int c, FILE *stream);

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "w");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!";
        int i;
        for(i = 0; i < strlen(name); i++)
        {
            fputc(name[i], file);
        }
        fputc('\n', file);
        fclose(file);
        return 0;
    

    }

    2、字符串写入:fputs();

    //参数1:写入的字符串

    //参数2:文件流

    //作用:将字符串写入文件中

    //返回值:返回一个非负值,如果发生错误则返回 EOF(-1)。

    int fputs(const char *s, FILE *stream);

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "w");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!\n";
        fputs(name, file);
        fclose(file);
        return 0;
    }
     
    

    3、数据块写入:fwrite();

    //参数1:要获取的数据的地址

    //参数2:要写入内容的单字节数

    //参数3:要写入size字节的数据项的个数

    //参数4:目标文件指针

    //返回值:返回实际写入的数据块的数目

    //作用:向文件写入数据块,以二进制形式对文件进行操作,不局限于文本文件。

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

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "wb+");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!\n";
        fwrite(name, strlen(name), 1, file);
        fclose(file);
        return 0;
    }
    

    4、格式化写入:fprintf();

    //参数1:目标文件指针

    //参数2:指定的格式控制字符串

    //参数3:各种输出项,与格式控制字符串中的字段一起写到文件中

    //返回值:执行成功返回实际写入文件的字符个数;执行失败,返回负数

    //作用:用来将输出项按指定的格式写入到指定的文本文件中。

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

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("/opt/admin/tmp/1.txt", "wb+");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char name[] = "hello world!\n";
        fprintf(file, "this is %s\n", name);
        fclose(file);
        return 0;
    }
    

    四:文件读取

    1、字符读取:fgetc()

    //参数1:目标文件指针

    //返回值:执行成功返回读取的字符,读取错误或者遇到结束标志EOF,返回EOF

    //作用:从指定的文件中读取一个字符

    int fgetc(FILE *stream);

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char c;
        while((c = fgetc(file)) != EOF)
        {
            printf("%c", c);
        }
        fclose(file);
        return 0;
    }
    

    2、字符串读取:fgets()

    //参数1:存储读取的数据

    //参数2:存储数据的大小

    //参数3:要读取的文件流

    //返回值:成功则返回读取的buf,失败则返回NULL,这是,buf中的数据不确定

    //作用:读取指定场长度的字符串存到字符数组中。每次只读取一行,每次最多读bufsize-1个字符(第bufsize个字符赋’\0’)

    char *fgets(char *buf, int bufsize, FILE *stream);

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char buf[1024] = {0};
        while(fgets(buf, 1024, file) != NULL)
        {
            printf("%s", buf);
        }
        fclose(file);
        return 0;
    }
    

    3、数据块读取:fread()

    //参数1:存储读取的数据

    //参数2:要读取的每个数据项的字节数

    //参数3:要读取的数据项的个数

    //参数4:读取的文件流

    //返回值:返回真实读取的数据项count数,错误时返回0

    //作用:一次读取文件中由若干个数据项组成的数据块,数据块的大小取决于数据项的大小和数据项的个数。

    size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./test", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char buf[102400] = {0};
        fread(buf, 1024, 100, file);
        printf("%s", buf);
        fclose(file);
        return 0;
    }
    

    4、格式化读取:fscanf()

    //参数1:读取的文件流

    //参数2:读取的字符格式

    //参数3:读取的各个输入项

    //返回值:成功则返回读入的参数个数,失败返回EOF

    //作用:根据数据格式format从文件流中读取数据,遇到空格或换行结束。

    int fscanf(FILEstream,const charformat,[argument…]);

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        char buf[1024] = {0};
        fscanf(file, "%s", buf);
        printf("%s\n", buf);
        fclose(file);
        return 0;
    }
    

    五:文件读写结合

    1、fgetc()与fputc()结合使用

    //以字符格式读取文件,再以字符格式写入文件,适用于文本文件

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char c;
        while( (c = fgetc(file)) != EOF )
        {
            fputc(c, fp);
        }
        fclose(file);
        fclose(fp);
        return 0;
    }
     
    

    2、fgets()与fputs()结合使用

    //从文件中按行读取字符串,再以字符串写入文件,适用于文本文件,优点是按行读取很方便

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char buf[1024] = {0};
        while(fgets(buf, 1024, file) != NULL)
        {
            fputs(buf, fp);
        }
        fclose(file);
        fclose(fp);
        return 0;
    }
     
    

    3、fread()与fwrite()结合使用

    //以数据块格式读取,再以数据块格式写入到文件中,可以读取二进制文件,优点是读取二进制文件使用

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char buf[1024] = {0};
        fread(buf, 1024, 1, file);
        fwrite(buf, strlen(buf), 1, fp);
        fclose(file);
        fclose(fp);
        return 0;
    }
    

    4、fprintf()与fscanf()结合使用 (推荐)

    //以格式化的方式读取,遇到空格或换行就结束,再将读取的文件写入到文件中,优点是可以指定写入的文件格式

    示例:

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
        FILE *file = fopen("./1.txt", "r");
        if(file == NULL)
        {
            printf("open error!\n");
            return 0;
        }
        FILE *fp = fopen("./2.txt", "w");
        char buf[1024] = {0};
        fscanf(file, "%s", buf);
        fprintf(fp, "aaa:%s", buf);
        fclose(file);
        fclose(fp);
        return 0;
    }
     
    

    参考:

    https://www.cnblogs.com/maluning/p/7955750.html

    https://blog.csdn.net/songbook/article/details/79686322

    展开全文
  • #include<stdio.h> int a; char b,c[100]; int main(){ FILE * fp1 = fopen("2in.txt", "r");... if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出 puts("不能打开文件!"); return 0; }
  • 作为一个新手学习C语言读写数据,我整合了一下自己查找的一些资料,用C语言实现将一个文件读入内存中,里面有运行工具,和一个word文档代码。
  • C语言读写文件操作.pdf
  • C语言读取文件时txt中的汉字出现乱码的解决方案

    千次阅读 多人点赞 2021-06-12 21:05:57
    C语言课程设计要求使用文件,然后在我进行文件操作的时候发生了一点小小的意外,读写文件中的汉字显示的居然是乱码。 经过我的一番查找之后发现居然是txt编码方式的问题。 为使计算机支持更多语言,通常使用 0x80~0...
  • 这篇文章主要介绍了C语言读取文件流的相关函数用法简介,包括fread()函数和feof()函数的使用,需要的朋友可以参考下。
  • c语言读取xml文件

    2014-12-15 22:29:21
    c语言 读取xml文件,相信对大家读取c语言文件有帮助
  • c语言读取文件指定行和列

    千次阅读 2021-11-06 11:14:54
    功能:从文件结构体指针stream中读取数据,每次读取一行; 说明:读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋值为\0)。如果该行不足bufsize个字符,则读完该行就结束,...
  • 在嵌入式系统上,经常会涉及到对文件进行读写的操作,本文主要介绍在Linux系统上常见的两种读写文件的方式,使用C语言库函数和系统调用。 一、使用C语言库函数的方式 1. 主要的相关函数接口 fopen() 打开文件, 第...
  • 如何正确用C语言读取文件

    千次阅读 2021-05-24 04:15:11
    如何正确用C语言读取文件在C语言中可以将相关定义的数据按照内存的原样写入文件,这对于大规模数据来说比较方便,因为文件的尺寸比单纯的ASCII存储要小很多。下面简单说明自己在存储如下定义的结点数据的体会。以二...
  • C语言文件读写

    2022-01-17 18:02:25
    简要介绍了C语言文件读写的相关方式
  • 背景 因为一些原因,产生了一些二进制数据,需要将其转换成为十六进制数据使用。考虑到正在学习C,所以试着用C语言文件读写来完成这项工作。
  • c语言读取mat文件调用的静态库,包含libmatio.lib、hdf5.lib、szip.lib、zlib1.lib
  • C语言文件读写操作

    千次阅读 2021-12-09 09:54:51
    0. 背景介绍 在C语言中,stdio.h库中提供了Input/Output 操作的函数。本文主要是对文本读写的基本操作进行记录,下面为相关函数的简单介绍和应用。 1. 打开文件 ... Read: 打开一个文件用于读取.
  • c语言实现文件读写操作

    千次阅读 2022-04-14 11:07:26
    //写文件 // FILE *fp=fopen("D:/2023考研/C/test.txt","w"); // if(fp==NULL){ // printf("打开文件失败!"); // exit(0); // } // for(int i=0;i<10;i++){ // fputs("Hello file!",fp); // } // fclose(fp...
  • C语言读写文件到磁盘
  • long filesize(char* filename);char* file_get_contents(char* filename);void file_put_contents(char* filename,char* data);示例:#include #include #include long filesize(char* filename);...
  • c语言读取文件的第二行

    千次阅读 2021-05-21 04:03:19
    c语言读取文件的第二行(2012-04-10 00:23:55)标签:c语言二杂谈c语言读取文件的第二行用c语言读取文件的第二行,第三个域的内容文件内容:abcd 123456 59990#1efgh 12347860000#2即取出60000,这个值不定长fscanfchar...
  • C语言文件读写操作(详解)

    万次阅读 多人点赞 2020-07-21 23:02:51
    数据流和缓冲区是什么?文件类型和文件存取方式都有啥? 数据流 就C程序而言,从程序移进,移出字节,这种字节流就...当使用标准I/O函数(包含在头文件stdio.h中)时,系统会自动设置缓冲区,并通过数据流来读写文件。当

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 199,121
精华内容 79,648
关键字:

c语言读取文件

友情链接: 新建文件夹.zip