C语言学习7——文件操作 文件的打开、读写、关闭 文件指针的使用

2023-11-08

关于C语言文件操作方面的知识,主要涉及到以下几个方面:

  1. 文件的打开和关闭
  2. 文件的读写
  3. 文件的定位

下面我将详细讲解每个方面。

  1. 文件的打开和关闭

在C语言中,需要使用fopen()函数来打开一个文件。该函数的原型如下:

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

其中,filename表示文件名,可以是相对路径或绝对路径;mode表示打开文件的模式,常见的模式有以下几种:

  • “r”:只读,文件必须存在
  • “w”:只写,如果文件存在则清空文件内容,如果文件不存在则创建文件
  • “a”:追加写,如果文件存在则在文件尾部追加数据,如果文件不存在则创建文件
  • “r+”:读写,文件必须存在
  • “w+”:读写,如果文件存在则清空文件内容,如果文件不存在则创建文件
  • “a+”:读写,如果文件存在则在文件尾部追加数据,如果文件不存在则创建文件。

我们来看一个例子,假设我们要打开一个文件叫做data.txt,并以只写的方式打开它:

#include <stdio.h>

int main() {
    FILE *fp;
    fp = fopen("data.txt", "w");
    if (fp == NULL) {
        printf("文件打开失败");
        return 1;
    }
    // 写入文件内容
    fprintf(fp, "Hello, World!\n");
    // 关闭文件
    fclose(fp);
    return 0;
}

这里我们使用的是fopen()函数,并使用if语句对文件指针进行了检查,以确保文件是否成功打开。当文件打开失败时,应该及时退出程序并给出错误提示。在写入完成后,我们还需要使用fclose()函数来关闭文件。

  1. 文件的读写

在文件被打开后,就可以使用fread()fwrite()函数来读写文件了。这两个函数的原型如下:

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

其中,ptr表示读写缓冲区的地址;size表示每个数据项的大小(以字节为单位);count表示要读写的数据项个数;stream表示要读写的文件指针。

我们来看一个例子,假设我们要打开一个文件叫做data.txt,并以只读的方式读取它:

#include <stdio.h>

int main() {
    char buf[1024];
    FILE *fp;
    fp = fopen("data.txt", "r");
    if (fp == NULL) {
        printf("文件打开失败");
        return 1;
    }
    // 读取文件内容
    while (fgets(buf, sizeof(buf), fp) != NULL) {
        printf("%s", buf);
    }
    // 关闭文件
    fclose(fp);
    return 0;
}

这里我们使用的是fgets()函数来读取文件内容,并使用while循环来读取整个文件。需要注意的是,fgets()函数每次只能读取一行数据。当读取完成后,我们还需要使用fclose()函数来关闭文件。

  1. 文件的定位

有时候我们会需要对文件进行随机读写,这就需要使用fseek()ftell()函数了。

fseek()函数用于设置文件指针的位置,函数原型如下:

int fseek(FILE *stream, long offset, int origin);

其中,stream表示要设置文件指针的文件指针;offset表示要移动的字节数;origin表示要移动的参考位置,有以下三种取值:

  • SEEK_SET:从文件起始位置开始计算偏移量
  • SEEK_CUR:从文件当前位置开始计算偏移量
  • SEEK_END:从文件末尾开始计算偏移量

需要注意的是,fseek()函数可能不支持在某些文件类型中随意移动文件指针,例如管道和网络套接字。

ftell()函数用于获取文件指针当前位置,函数原型如下:

long ftell(FILE *stream);

我们来看一个例子,假设我们要获取文件data.txt中第10个字符的值:

#include <stdio.h>

int main() {
    FILE *fp;
    char ch;
    fp = fopen("data.txt", "r");
    if (fp == NULL) {
        printf("文件打开失败");
        return 1;
    }
    // 将文件指针定位到第10个字符
    fseek(fp, 9L, SEEK_SET);
    // 读取第10个字符
    ch = fgetc(fp);
    printf("%c", ch);
    // 关闭文件
    fclose(fp);
    return 0;
}

这里我们使用fseek()函数将文件指针定位到第10个字符,再使用fgetc()函数读取该字符。

需要注意的是,在使用文件操作函数时,应该注意文件指针的位置,以避免出现数据丢失或错误等问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言学习7——文件操作 文件的打开、读写、关闭 文件指针的使用 的相关文章

随机推荐