C 标准库 - <stdio.h>

C 标准库 - <stdio.h>

引言

在 C 编程语言中,stdio.h 是一个非常重要的头文件,它包含了标准输入输出函数,是 C 程序进行输入输出操作的核心。本文将详细介绍 <stdio.h> 头文件中包含的函数及其应用,帮助读者更好地理解和运用这个标准库。

一、<stdio.h> 头文件概述

stdio.h 是 Standard Input/Output 的缩写,它定义了标准输入输出函数,包括输入输出缓冲区、格式化输入输出、文件操作等。在 C 程序中,包含 stdio.h 头文件后,就可以使用这些函数进行输入输出操作。

二、<stdio.h> 中常用的函数

1. 打开文件

以下是一些用于打开文件的函数:

  • FILE *fopen(const char *filename, const char *mode);:打开一个指定的文件,返回一个指向 FILE 对象的指针。
  • FILE *freopen(const char *filename, const char *mode, FILE *stream);:重新打开一个指定的文件,返回一个指向 FILE 对象的指针。
  • FILE *fdopen(int fd, const char *mode);:根据文件描述符打开一个文件,返回一个指向 FILE 对象的指针。

2. 关闭文件

  • int fclose(FILE *stream);:关闭一个打开的文件,返回 0 表示成功,非 0 表示失败。

3. 格式化输入输出

  • int fprintf(FILE *stream, const char *format, ...);:将格式化后的数据写入到指定的文件流中。
  • int fscanf(FILE *stream, const char *format, ...);:从指定的文件流中读取格式化后的数据。
  • int printf(const char *format, ...);:将格式化后的数据输出到标准输出。
  • int scanf(const char *format, ...);:从标准输入读取格式化后的数据。

4. 文件操作

  • int fseek(FILE *stream, long offset, int origin);:移动文件指针到指定的位置。
  • long ftell(FILE *stream);:返回文件指针当前位置的偏移量。
  • void rewind(FILE *stream);:将文件指针移动到文件开头。

三、示例代码

以下是一个简单的示例,演示了如何使用 <stdio.h> 中的函数进行文件操作:

c 复制代码
#include <stdio.h>

int main() {
    FILE *fp;
    int i;
    char filename[] = "example.txt";

    // 打开文件
    fp = fopen(filename, "w+");
    if (fp == NULL) {
        printf("打开文件失败\n");
        return 1;
    }

    // 写入数据
    for (i = 0; i < 10; i++) {
        fprintf(fp, "Hello, World! %d\n", i);
    }

    // 移动指针到文件开头
    rewind(fp);

    // 读取数据
    while (fscanf(fp, "%d", &i) != EOF) {
        printf("读取到的数据:%d\n", i);
    }

    // 关闭文件
    fclose(fp);

    return 0;
}

四、总结

本文介绍了 C 标准库 <stdio.h> 中的常用函数及其应用,希望对读者有所帮助。在实际编程过程中,熟练掌握这些函数,能够提高编程效率和代码质量。

相关推荐
Dxy123931021610 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
05664611 小时前
Python康复训练——常用标准库
开发语言·python·学习
骊城英雄11 小时前
基于C#+avalonia ui实现的跨平台点胶机灌胶监控控制上位机软件
开发语言·ui·c#
吾儿良辰11 小时前
一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
开发语言·windows·c#
昆曲之源_娄江河畔11 小时前
Python如何安装flask, pymssql
开发语言·python·flask·pymssql
Leighteen11 小时前
`try-finally` 里的 `return`:为什么 `finally` 会悄悄改掉返回值、吞掉异常
java·开发语言
05664611 小时前
Python康复训练——控制流与函数
开发语言·python·学习
峥无12 小时前
C++11 深度详解:现代 C++ 基石全梳理
开发语言·c++·笔记
阿米亚波12 小时前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
SomeB1oody12 小时前
【RustyML入门】1.0. 快速上手
开发语言·后端·机器学习·rust·教程