首页 > 编程笔记 > C语言笔记 阅读:10

C语言fgetc()和fputc()函数的用法(非常详细,附带实例)

在 C 语言程序中,当以字符形式读写文件时,需要用到 fgetc() 和 fputc() 这两个函数,它们的作用是对文本文件读取和写入一个字符。

fgetc() 函数的语法如下:
fgetc(fp) //fp为文件指针

fputc() 函数的语法如下:
fputc(ch,fp) //ch为写入文件的字符,fp为文件指针

fgetc() 和 fputc() 函数的返回值都是 int 型:
【实例 1】创建一个文本文件,从键盘输入一些字符,逐个把它们写入文件中,到输入字符“#”为止。代码如下:
#include <stdio.h>
#include<stdlib.h>
#define FILESTR "E:\c.dat" //定义文件路径
 
int main()
{
    FILE *fp;
    char ch;
 
    //在E盘中创建c.dat文件
    if((fp=fopen(FILESTR,"w"))==NULL)
    {
        printf("error: cannot open file!\n");
        exit(0);
    }
    printf("输入要保存的字符,以#结束: \n");
    while((ch=getchar())!='#')
    //程序读到'#',结束while循环,所以不会将'#'写入文件中
    {
         putchar(ch);
         fputc(ch,fp);
    }  //每次从键盘读取一个字符写入文件并且显示在屏幕中
    printf("\n");
    printf("创建完成!\n");
 
    return 0;
}
编译运行,结果如下:

输入要保存的字符,以#结束:
I love c yuyan#
I love c yuyan
创建完成!

该程序在 E 盘创建了一个文本文件,然后为文件写入“I love c yuyan”的内容,写入的过程中将内容输出到屏幕上,执行到“#”时终止写入文件。

打开 c.dat 文件,文件的内容为:
I love c yuyan

【实例 2】将上例的 c.dat 文件中的内容读取出来显示在屏幕中,并且在该文件后面添加“and computer!”的内容。代码如下:
#include <stdio.h>
#include <stdlib.h>
#define FILESTR "E:\c.dat" //定义文件路径
 
int main()
{
    FILE *fp;
    char ch;
    printf("读取c.dat文件中的内容: \n");
    if((fp=fopen(FILESTR,"a+"))==NULL)
    {
        printf("error: cannot open file!\n");
        exit(0);
    }
    ch=fgetc(fp);
    while(!feof(fp)) //!feof(fp)为可以换成ch!=EOF
    {
        putchar(ch);
        ch=fgetc(fp);
    } //每次读取一个字符,直到读取完毕
    printf("\n对c.dat文件添加内容,直到输入#: \n");
    while((ch=getchar())!='#')
    {
        putchar(ch);
        fputc(ch,fp);
    }
    printf("\n添加完成\n");
    fclose(fp);
 
    return 0;
}
编译运行,结果如下:

读取c.dat文件中的内容:
I love c yuyan
对c.dat文件添加内容,直到输入#:
and computer!#
and computer!
添加完成

程序中通过“a+”的方式打开上例中创建的文件,读取内容显示在屏幕上,然后在文件后添加内容,添加内容与写文件的操作一样。

feof(fp) 是用来判断 fp 是否指向文件的尾部标志的,即 End of File,当文件读到尾部时,feof(fp) 的返回值为 1,此时结束 while 循环的读操作。

C语言读写文件的注意事项

在 C 语言中,打开文件后就可以对其进行读写操作,打开文件实际上是建立一个信息缓冲区,数据实际上并没有直接写入文件,而是被存储在缓冲区(一般是内存中),执行 fcolse() 函数后才将数据送入文件中,然后关闭文件。

C语言中的文件分为两种:ASCII 文件(文本文件)和二进制文件。

可以用任何文字处理程序阅读的简单文本文件、图形文件及文字处理程序等计算机程序都属于二进制文件,这些文件含有特殊的格式及计算机代码。

文本文件的数据以字符的形式存放在磁盘中,所以文本文件的内容是可以直接读懂的;而在读二进制文件时会原封不动地读取文件的全部内容,写二进制文件也是将文件缓冲区的内容全部写入,不进行转换。

二进制文件不能直接读懂,这是文本文件和二进制文件最直观的区别。

C语言中用“\n”便可实现换行,而 Windows 操作系统需要用“\r”和“\n”才能实现换行:
打开文本文件的方式不带“b”(r、w、a、r+、w+、a+),打开二进制文件的方式是带“b”的(rb、wb、ab、rb+、wb+、ab+),“b”的作用就是在读写文件时进行换行符的转换。

二进制文件要用二进制的方式打开和读写,文本文件则要用文本的方式打开和读写,规范使用,避免出现错误。

相关文章