首页 > 其他分享 >C语言文件相关函数

C语言文件相关函数

时间:2024-08-30 21:50:14浏览次数:5  
标签:fp 文件 读取 写入 C语言 函数

目录

一、引言

二、文件函数概述

   1.文件类型指针

   2.常用文件函数

三、文件函数使用详解

   1.打开文件

   2.关闭文件

   3.写入文件

   4.读取文件

   5.二进制文件操作

四、实战应用

五、总结


        本文将详细介绍C语言中文件函数的基本概念、常用函数及其使用方法,并通过实例讲解如何在实际项目中应用文件函数进行数据的读写操作。掌握这些知识,将有助于提高C语言编程能力,为后续的项目开发奠定基础。

一、引言

        在C语言编程中,文件操作是不可或缺的一部分。掌握文件函数的使用,可以方便地对文件进行读写操作,实现数据的持久化存储。本文将围绕C语言中的文件函数展开讨论,带领大家掌握文件操作的核心技巧。

二、文件函数概述

   1.文件类型指针

        在C语言中,使用文件类型指针(FILE*)来表示文件。文件类型指针指向一个文件结构体,该结构体包含了文件的相关信息,如文件名、文件状态等。

   2.常用文件函数

        以下是C语言中常用的文件函数及其功能:

  • fopen:打开文件
  • fclose:关闭文件
  • fprintf:向文件写入格式化数据
  • fscanf:从文件读取格式化数据
  • fgets:从文件读取一行数据
  • fputs:向文件写入一行数据
  • fread:从文件读取二进制数据
  • fwrite:向文件写入二进制数据

三、文件函数使用详解

   1.打开文件

        使用fopen函数打开文件,其原型如下:

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

参数说明:

  • filename:文件名
  • mode:打开模式,如"r"(只读)、“w”(写入)、“a”(追加)等

示例:

FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
    printf("打开文件失败!\n");
    exit(1);
}

   2.关闭文件

        使用fclose函数关闭文件,其原型如下:

int fclose(FILE *stream);

示例:

fclose(fp);

   3.写入文件

        使用fprintf和fputs函数向文件写入数据。

示例:

// 使用fprintf写入格式化数据
fprintf(fp, "Hello, World!\n");

// 使用fputs写入一行数据
fputs("Hello, CSDN!\n", fp);

   4.读取文件

        使用fscanf和fgets函数从文件读取数据。

示例:

// 使用fscanf读取格式化数据
char str[100];
fscanf(fp, "%s", str);
printf("%s\n", str);

// 使用fgets读取一行数据
fgets(str, 100, fp);
printf("%s\n", str);

   5.二进制文件操作

        使用fread和fwrite函数进行二进制文件的读写操作。

示例:

// 写入二进制数据
int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
fwrite(arr, sizeof(int), 10, fp);

// 读取二进制数据
int brr[10];
fread(brr, sizeof(int), 10, fp);

四、实战应用

        以下是一个简单的示例,演示如何使用文件函数实现一个简单的通讯录管理系统:

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

typedef struct {
    char name[20];
    char phone[12];
} Contact;

void addContact(Contact *c) {
    FILE *fp = fopen("contact.txt", "a");
    if (fp == NULL) {
        printf("打开文件失败!\n");
        exit(1);
    }
    fprintf(fp, "%s %s\n", c->name, c->phone);
    fclose(fp);
}

void showContacts() {
    FILE *fp = fopen("contact.txt", "r");
    if (fp == NULL) {
        printf("打开文件失败!\n");
        exit(1);
    }
    Contact c;
    while (fscanf(fp, "%s %s", c.name, c.phone) != EOF) {
        printf("姓名:%s,电话:%s\n", c.name, c.phone);
    }
    fclose(fp);
}

int main() {
    Contact c1 = {"张三", "13812345678"};
    addContact(&c1);
    showContacts();
    return 0;
}

五、总结

        本文详细介绍了C语言文件函数的基本概念、常用函数及其使用方法,并通过实例讲解了文件函数在实际项目中的应用。掌握文件操作技巧,对于提高C语言编程能力具有重要意义。希望本文对大家有所帮助。

标签:fp,文件,读取,写入,C语言,函数
From: https://blog.csdn.net/2201_75782847/article/details/141689304

相关文章

  • 【C语言进阶】C语言指针进阶实战:优化与难题解析
    ......
  • 线程(函数接口、同步、互斥、条件变量)
    线程Thread1.什么是线程1.1概念线程是一个轻量级的进程,为了提高系统的性能引入线程。线程和进程是参与统一的调度。在同一个进程中可以创建的多个线程,共享进程资源。(Linux里同样用task_struct来描述一个线程)1.2进程和线程区别相同点:都为系统提供了并发执行的......
  • 使用 setenv 配置文件管理 Tomcat 的自定义环境变量
    1、背景描述有时候,我们会在catalina.bat或catalina.sh文件中,自定义一些环境变量,例如额外指定JDK路径或设置JVM参数。实际上,直接在catalina.bat或catalina.sh文件中,自定义环境变量的做法,是不规范的。因为在对Tomcat进行(小版本)升级时,新版本的catalina.bat或cata......
  • C语言基础(二十六)
    二叉树节点通常包含三个部分:存储数据的部分、指向左子节点的指针、以及指向右子节点的指针。测试代码:#include"date.h"#include<stdio.h>#include<stdlib.h>#include<time.h>//定义二叉树节点的结构,包括节点的值、指向左子节点的指针和指向右子节点的指针。t......
  • C语言基础(二十七)
    1、位字段(Bit-fields)也是一种数据结构,允许在结构体(struct)或联合体(union)中定义其成员占用特定的位数。对于需要精确控制内存布局或处理硬件寄存器映射等场景非常有用。位字段使得开发者能够定义小于一个字节的变量,从而更有效地利用内存空间。位字段的声明方式是在结构体或联合体......
  • 11.2 C语言文件的读写操作
    11.2C语言文件的读写操作11.2文件的读写操作11.2文件的读写操作文件的读写是文件处理中的核心操作,C语言提供了多种函数来实现从文件读取数据和向文件写入数据。文件的写操作写字符:fputc(c,fp);//将字符c写入文件写字符串:fputs(str,fp);//将字符......
  • Windows11系统MsApoFxProxy.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个MsApoFxProxy.dll文件(挑选合适的版本文件)......
  • Windows11系统msaddsr.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个msaddsr.dll文件(挑选合适的版本文件)把它放......
  • Goby 漏洞发布|Nacos Jraft 服务文件读取漏洞【已复现】
    漏洞名称:NacosJraft服务文件读取漏洞EnglishName:NacosJraftServicesFileReadVulnerabilityCVSScore:5.0漏洞描述:NACOS是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nac......
  • 关于vue render函数的写法
    vNode只是用来描述DOM,自身不维护状态,messageBox只是利用vNode渲染DOM,要想实现messageBox内容响应式,需要提供Vue实例(组件):写一个这样的组件新建组件(customRadioGroup.js):importVuefrom"vue";constCustomInput=Vue.component("CustomRadioGroup",{props:["value"......