关于文件操作的函数

时间:2022-06-01 17:04:22
1 int fseek(FILE *stream, long offset, int fromwhere);
第一个参数file指针
第二个参数移动的偏移量
第三个参数移动到哪里
分别用3个宏
SEEK_SET 既0 文件开头
SEEK_CUR 既1 文件当前位置
SEEK_END 既2 文件结尾
但不推荐用数字 最好用宏

简言之:
fseek(fp,100L,SEEK_SET);把fp指针移动到离文件开头100字节处;
fseek(fp,100L,SEEK_CUR);把fp指针移动到离文件当前位置100字节处;
fseek(fp,100L,SEEK_END);把fp指针退回到离文件结尾100字节处。
此函数常用来计算流的长度:
int filesize = fseek( fp, 0, SEEK_END );

fseek( fp, 0, SEEK_SET );

2 fflush(stdin)是一个计算机专业术语,功能是清空输入缓冲区,通常是为了确保不影响后面的数据读取(例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);)。

3

EOF是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。

#define EOF (-1)

在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志

4

feof 函数 检查文件流是否读到文件末尾。

当读到文件末尾时,返回非0值;其他情况返回0.

5

fscanf(文件指针,数据格式,需要读到的变量的地址);

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    char name[20];
    double height;
    FILE *fp;
    fp = fopen("d:\\1.txt", "r+");//“r+” 以可读写方式打开文件,该文件必须存在,d:\\1.txt表示d盘根目录下的1.txt文件
    if (fp == NULL)
    {
        printf("Cannot open the file!\n");
        exit(0);
    }
    printf("学号\t姓名\t身高\n");

    while (!feof(fp))
    {
        fscanf(fp, "%d%s%lf", &num, name, &height);
        printf("%d\t%s\t%g", num, name, height);

    }
    printf("\n");
    fclose(fp);//要记得关闭文件
    return 0;
}

txt文件可以一行一行读,也可以一行一行的写进去。

fprintf(文件流指针,数据格式,变量值);