C语言中的二进制文件与文本文件技术详解

简介: C语言中的二进制文件与文本文件技术详解

 


一、引言


在C语言编程中,文件操作是一个重要的部分,它允许我们与计算机硬盘上的数据进行交互。文件按照数据的组织形式可以分为二进制文件和文本文件。二进制文件中的数据以二进制形式存储,而文本文件中的数据则是以人类可读的字符形式存储。本文将详细介绍C语言中这两种文件的操作方式,并辅以示例代码进行说明。


二、文本文件操作


打开文件

在C语言中,我们可以使用fopen函数来打开文件。对于文本文件,我们通常使用"r"(只读)、"w"(写入,如果文件已存在则覆盖原有内容)、"a"(追加写入,如果文件已存在则在文件末尾添加内容)等模式。

示例代码:

#include <stdio.h>
int main() {
    FILE *fp;
    fp = fopen("test.txt", "w"); // 打开文件,如果不存在则创建
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }
    // ... 文件操作代码 ...
    fclose(fp); // 关闭文件
    return 0;
}

写入文件

使用fprintf函数可以向文本文件中写入数据。该函数与printf函数类似,但多了一个文件指针参数。

示例代码:

#include <stdio.h>
int main() {
    FILE *fp;
    fp = fopen("test.txt", "w");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }
    fprintf(fp, "Hello, World!\n"); // 写入字符串到文件
    fclose(fp);
    return 0;
}

读取文件

使用fscanf函数可以从文本文件中读取数据。该函数与scanf函数类似,但多了一个文件指针参数。

 

示例代码:

#include <stdio.h>
int main() {
    FILE *fp;
    char buffer[100];
    fp = fopen("test.txt", "r");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }
    fscanf(fp, "%s", buffer); // 读取字符串到buffer中
    printf("Read from file: %s\n", buffer);
    fclose(fp);
    return 0;
}

注意:上述读取示例仅读取了一个单词,因为%s格式说明符在遇到空白字符(如空格、制表符或换行符)时会停止读取。如果要读取整行文本,可以使用fgets函数。


三、二进制文件操作


打开文件

与文本文件类似,使用fopen函数打开二进制文件时,需要使用"rb"(只读)、"wb"(写入,覆盖原有内容)、"ab"(追加写入)等模式。

写入文件

使用fwrite函数可以向二进制文件中写入数据。该函数需要指定要写入的数据块、数据块的大小、数据块的数量以及文件指针。

示例代码:

#include <stdio.h>
int main() {
    FILE *fp;
    int data[] = {1, 2, 3, 4, 5};
    int n = sizeof(data) / sizeof(data[0]);
    fp = fopen("data.bin", "wb");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }
    fwrite(data, sizeof(int), n, fp); // 写入整型数组到文件
    fclose(fp);
    return 0;
}

读取文件

使用fread函数可以从二进制文件中读取数据。该函数需要指定读取数据的目标位置、数据块的大小、要读取的数据块数量以及文件指针。

 

示例代码:

#include <stdio.h>
int main() {
    FILE *fp;
    int data[5];
    fp = fopen("data.bin", "rb");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }
    fread(data, sizeof(int), 5, fp); // 从文件读取整型数组到data中
    for (int i = 0; i < 5; i++) {
        printf("%d ", data[i]);
    }
    printf("\n");
    fclose(fp);
    return 0;
}

          四、总结


本文详细介绍了C语言中二进制文件和文本文件的操作方式,包括打开文件、写入文件和读取文件等基本操作,并辅以示例代码进行说明。通过对比可以发现,二进制文件和文本文件在数据组织方式、存储效率以及读取写入方式等方面存在差异。在实际编程中,应根据具体需求选择合适的文件类型进行操作。

相关文章
|
5月前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
58 1
|
4月前
|
Linux C语言
【编程小实验】C语言实现:无限循环写入文本文件,支持Ctrl+C中断与数据追加(附完整源码)
在Linux中,文件I/O(输入/输出)是程序与文件进行交互的基本方式,包括读取文件内容和向文件写入数据。这通常通过标准的C库函数来实现,下面是一些基本的文件读写操作和代码示例。
236 0
|
6月前
|
程序员 C语言
C语言中的流程转移控制技术
C语言中的流程转移控制技术
55 2
|
6月前
|
存储 程序员 C语言
C语言中的函数指针及其应用技术
C语言中的函数指针及其应用技术
74 2
|
6月前
|
存储 缓存 算法
动态数组技术详解及其在C语言中的应用
动态数组技术详解及其在C语言中的应用
88 0
|
6月前
|
C语言
C语言中的字符串处理函数技术详解
C语言中的字符串处理函数技术详解
89 1
|
6月前
|
算法 搜索推荐 数据处理
C语言中的排序与查找技术详解
C语言中的排序与查找技术详解
70 1
|
6月前
|
存储 C语言
C语言中的结构体与函数传递技术详解
C语言中的结构体与函数传递技术详解
208 1
|
6月前
|
存储 C语言
向函数传递字符串: C语言中的技术与实践
向函数传递字符串: C语言中的技术与实践
402 0
|
6月前
|
存储 算法 C语言
探索C语言中的动态数组技术
探索C语言中的动态数组技术
74 0