自学内容网 自学内容网

文件操作(3)

1.fseek函数和ftell函数

fseek函数的用法

fseek函数用于设置文件流(如文件)的位置指针,根据提供的偏移量和起始位置来调整指针的位置。

其函数声明为:int fseek(FILE *stream, long int offset, int origin);

参数说明:

 stream :指向要操作的文件流的指针。
 offset :表示从起始位置起计算的偏移量,单位是字节。
 origin :指定偏移量的起始位置,常见值如下:
 SEEK_SET :从文件开头偏移(默认)。
 SEEK_CUR :从当前位置偏移。
 SEEK_END :从文件结尾偏移。

以下是一个简单的例子,展示了如何使用fseek函数将文件指针移动到文件开头、当前位置和文件结尾:

int main() {
    FILE *file = fopen("道德经.txt", "r");
    if (file == NULL) {
        printf("无法打开文件!");
        return 1;
    }

    // 移动文件指针到文件开头
    fseek(file, 0, SEEK_SET);

    // 移动文件指针到当前位置
    fseek(file, 0, SEEK_CUR);

    // 移动文件指针到文件结尾
    fseek(file, 0, SEEK_END);

    // 关闭文件
    fclose(file);
    return 0;
}

ftell函数用法

 ftell 是C语言中的一个函数,用于获取文件指针当前的位置。

其原型如下:long ftell(FILE *stream);

参数:

 stream :这是一个指向 FILE 对象的指针,该 FILE 对象指定了一个打开的文件。

返回值:

如果成功, ftell 函数返回当前 stream 指向的文件位置,这是一个相对于文件开头的偏移量。
如果失败或发生错误,返回 -1 。

2.ferror函数和feof函数

ferror函数
调用格式 : int ferror(FILE *stream); 
参数 : stream  是指向文件的FILE结构指针。
功能 :
检查上一次对文件流的输入输出操作是否有错误发生。
如果返回值为非零,表示上一次I/O操作失败;

如果为零,表示操作成功。
通常在文件操作如 fread 、 fwrite 、 fgetc 之后调用,以检查操作是否出错。

feof函数
调用格式 : int feof(FILE *stream); 
参数 : stream  同样是指向文件的FILE结构指针。
功能 :
文件读取结束后,判断是否是因为正常到达文件末尾而结束,还是由于其他原因如文件读取错误导致读取终止。

如果文件流已到达文件末尾, feof 返回一个非零值;否则返回0。

区别

关注点不同 :
 ferror  关注的是文件操作中的错误状态,即是否发生了读写错误。
 feof  关注的是文件流的位置,即是否到达文件的末尾。
使用场景 :
 ferror  通常在文件操作之后调用,用于诊断操作是否成功。
 feof  通常在文件读取操作中或结束后调用,用于判断读取是否已完成。
返回值含义 :
 ferror  的非零返回值表示文件操作中有错误发生。
 feof  的非零返回值表示文件流已到达文件末尾。


原文地址:https://blog.csdn.net/Starry_tsx/article/details/142427113

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!