C语言—文件

C中文件可分为文本文件和二进制文件。

文件指针和FILE 类型

在C语言中,FILE 类型是一个用于表示文件流结构体类型。这个结构体在标准I/O(输入/输出)库中定义,尽管其确切的内部结构对程序员是隐藏的,也可能因不同的编译器实现而有所不同。FILE 结构体包含了所有用于文件操作的必要信息,例如文件的位置指针、错误指示器、文件结束指示器等。

创建文件指针

使用 FILE 类型创建文件指针,用于后续的文件操作。

FILE *fp;

打开文件

使用 fopen 函数打开文件时,会返回一个 FILE 类型的指针。

fp = fopen("example.txt", "r");  // 打开文件用于读取
if (fp == NULL) {
    // 错误处理
}

读写文件

通过 FILE 类型的指针,可以使用各种文件操作函数,如 fprintf、fscanf、fgets、fputs、fread 和 fwrite 等。

fprintf(fp, "Hello, World!");  // 写入文件
char buffer[100];
fgets(buffer, 100, fp);        // 从文件读取

fprintf 和 fscanf

fprintf 函数用于向文件写入格式化的输出,类似于 printf,但输出到指定的文件流。

FILE *fp = fopen("file.txt", "w");
fprintf(fp, "The value of pi: %f\n", 3.1416);
fclose(fp);

fscanf 函数用于从文件读取格式化的输入,类似于 scanf,但从指定的文件流读取。

FILE *fp = fopen("file.txt", "r");
int age;
fscanf(fp, "%d", &age);
fclose(fp);

fgets 和 fputs

fgets 函数用于从文件中读取一行,它会读取直到换行符或文件结束,或者读取到指定的字符数为止。

char buffer[100];
FILE *fp = fopen("file.txt", "r");
if (fgets(buffer, 100, fp) != NULL) {
    printf("%s", buffer);
}
fclose(fp);

fputs 函数用于向文件写入一个字符串,但不包括空字符(‘\0’)

fread 和 fwrite

fread 函数用于从文件读取数据块。它适用于二进制文件或需要读取固定大小数据块的场合。

FILE *fp = fopen("data.bin", "rb");
char data[100];
size_t bytesRead = fread(data, sizeof(char), 100, fp);
fclose(fp);

fwrite 函数用于向文件写入数据块。它同样适用于二进制文件或需要写入固定大小数据块的场合。

FILE *fp = fopen("data.bin", "wb");
char data[100] = "Some data";
fwrite(data, sizeof(char), strlen(data), fp);
fclose(fp);
FILE *fp = fopen("file.txt", "w");
fputs("Hello, World!", fp);
fclose(fp);

关闭文件

文件操作完成后,使用 fclose 关闭文件,释放资源。

fclose(fp);

文件定位

使用 fseek、ftell 和 rewind 等函数移动文件指针或获取当前位置。

fseek(fp, 0, SEEK_END);  // 移动到文件末尾
long fileSize = ftell(fp);  // 获取文件大小
rewind(fp);  // 回到文件开头

举例

下面是一个简单的示例,展示了如何在C语言中创建一个文件,向其中写入一些文本,然后读取并显示这些文本:

#include 

int main() {
    FILE *fp;
    
    // 打开文件用于写入
    fp = fopen("test.txt", "w");
    if (fp == NULL) {
        perror("Error opening file");
        return -1;
    }
    fprintf(fp, "Hello, file!\n");
    fclose(fp);  // 关闭文件

    // 打开文件用于读取
    fp = fopen("test.txt", "r");
    if (fp == NULL) {
        perror("Error opening file");
        return -1;
    }
    char buffer[100];
    fgets(buffer, 100, fp);
    printf("Read from file: %s", buffer);
    fclose(fp);  // 关闭文件

    return 0;
}

注意:上述代码在VS2015中报错的话,改成fp = fopen_s(&fp,“test.txt”, “r”);即可

你可能感兴趣的:(C&C++,c语言,c++,开发语言)