文件

文件类型指针

​ 文件指针是一个指向结构体类型的指针,定义格式为:FILE *指针变量名。在使用文件时,都需要先定义文件指针。

文本文件与二进制文件

文本形式存放的是字符的ASCII码,二进制形式存放的是数据的二进制。例如“100”如果是文本形式就是存储’1’、 ’0’、 ’0’三个字符的ASCII码(00110001 00110000 00110000),如果是二进制形式就把100转化成二进制(01100100)。

打开文件

​ 文件的打开形式如下:FILE*fp;fp=fopen("c:\\lab.c","rb");。fopen函数的前面一部分为文件名,后面一部分为文件的使用方式。其中r代表读,w代表写,a代表添加,b代表二进制位的。

文件函数

  1. 判断文件结束feof函数,调用形式为:feof(FILE*fp);//文件指针,如果文件结束,则函数返回1,否则返回0
  2. fseek用来设置文件的位置,接着的读或写操作将从此位置开始。函数的调用形式如下:fseek(文件指针,位移量,移动起始点);
    例如:FILE*fp=fopen("C:\\test.c","rb");fseek(fp,12,SEEK_SET);//表示将文件fp的位置移动岛文件起始位置后面的第12个字节的位置上或者fseek(fp,12,0);
    fseek(fp,-12,SEEK_END);//表示将文件fp的位置移动到文件末尾位置前面的第12个字节的位置上或者fseek(fp,12,2);
    如果是fseek(fp,12,SEEK_CUR); //表示将文件fp的位置从当前位置移动后面的第12个字节的位置上或者fseek(fp,12,1);
  3. ftell用来获得文件当前的位置,函数给出当前位置相对于文件开头的字节数。函数调用形式如下:
    ftell(FILE *fp) //给出当前闻之相对于开头的字节数 ,出错时,返回-1L
  4. 文件位置移到开头rewind函数功能等价于 fseek(fp,0,SEEK_SET)
  5. 文件字符输入输出ch=fgetc(FILE *fp)函数用于从fp指定的文件中读入一个字符并把它作为函数值返回
  6. fputc(char ch,FILE *fp),将字符ch写到文件指针fp所指的文件中去,输出成功,则返回输出的字符,失败,则返回一个EOF值
  7. 文件输入输出fscanf函数和fprintf函数,一般形式fscanf(文件指针,格式控制字符串,输入项表或输入项表)
  8. 文件字符串输入输出fgets函数(fgets(str,n,fp),功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内)和fputs函数( fputs(str,fp) )
  9. 读写二进制文件fread函数和fwrite函数。

例题:

​ 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:

#include <stdio.h>//这是C语言的预处理指令,用于包含标准输入输出库。
void fun(char *s, int a, double f)//定义了一个名为fun的函数,它接受一个字符指针、一个整数和一个浮点数作为参数。
{
    FILE *fp;
    char ch;
    //在函数内部定义了一个文件指针fp和一个字符变量ch。
    fp = fopen("file1.txt", "w");//打开名为"file1.txt"的文件以写入数据。如果文件不存在,将创建一个新文件。
    fprintf(fp, "%s %d %f\n", s, a, f);//将参数s、a和f的值写入文件。
    fclose(fp);//关闭文件。
    fp = fopen("file1.txt", "r");//以读取模式重新打开文件。
    printf("\nThe result :\n\n");//在控制台打印提示信息。
    ch = fgetc(fp);//从文件中读取一个字符并存储在ch中。
    while (!feof(fp))//当未到达文件末尾时,执行循环体。
    {
        putchar(ch);//打印字符ch。
        ch = fgetc(fp);//再次从文件中读取一个字符。

    }
    fclose(fp);//关闭文件。
}
int main()//定义主函数。
{
    //在主函数中定义并初始化一个字符数组、一个整数和一个浮点数。
    char a[10] = "Hello!";
    int b = 12345;
    double c = 98.76;
    fun(a, b, c);//调用fun函数,将字符数组、整数和浮点数作为参数传入。
}
posted @ 2024-03-20 20:08  JenckMin  阅读(2)  评论(0编辑  收藏  举报