本文最后更新于 2026-02-28,文章内容可能已经过时。

C语言的输入输出函数主要分为标准I/O(用于控制台交互)和文件I/O(用于文件操作),核心函数包括printf()/scanf()(格式化输入输出)、getchar()/putchar()(字符操作)及fopen()/fclose()/fprintf()/fscanf()(文件操作),所有函数均需包含<stdio.h>头文件,其中printfscanf是程序交互的基础,文件操作需遵循"打开-读写-关闭"流程,是C语言程序与用户或外部数据交互的核心机制。

C语言中的输入输出(I/O)操作是程序与用户或外部数据源进行交互的基本方式。所有输入输出函数都定义在<stdio.h>头文件中,需要在程序开头包含该头文件。

一、标准输入输出函数

1. 输出函数

(1) printf()

  • 功能:向标准输出设备(通常是屏幕)发送格式化的字符串
  • 原型int printf(const char *format, ...);
  • 常见格式说明符
    • %d:十进制整数
    • %f:浮点数
    • %c:单个字符
    • %s:字符串
    • %x:十六进制整数
    • %.2f:保留两位小数的浮点数

示例

#include <stdio.h>
int main() {
    int age = 30;
    float height = 1.75;
    printf("Age: %d, Height: %.2f meters\n", age, height);
    return 0;
}

(2) putchar()

  • 功能:输出单个字符到标准输出设备

  • 原型int putchar(int c);

  • 示例

    putchar('A');  // 输出字符 'A'
    

(3) puts()

  • 功能:输出字符串并自动追加换行符

  • 原型int puts(const char *s);

  • 示例

    puts("Hello, World!");  // 输出 "Hello, World!" 并换行
    

2. 输入函数

(1) scanf()

  • 功能:从标准输入设备(通常是键盘)读取格式化输入
  • 原型int scanf(const char *format, ...);
  • 注意事项
    • 变量前必须加&符号(地址运算符),字符串(字符数组)除外
    • 输入时需严格匹配格式说明符

示例

#include <stdio.h>
int main() {
    int age;
    float height;
    printf("Enter your age and height: ");
    scanf("%d %f", &age, &height);
    printf("Age: %d, Height: %.2f meters\n", age, height);
    return 0;
}

(2) getchar()

  • 功能:从标准输入设备读取一个字符

  • 原型int getchar(void);

  • 返回值:正常返回字符的ASCII码值,出错返回-1

  • 示例

    char c = getchar();  // 读取一个字符
    

(3) gets()

  • 功能:从标准输入设备读取一行字符串
  • 注意:有安全风险,不推荐使用,建议使用fgets()替代
  • 原型char *gets(char *s);

二、文件输入输出函数

1. 文件操作函数

(1) fopen()

  • 功能:打开文件
  • 原型FILE *fopen(const char *filename, const char *mode);
  • 常见模式
    • "r":只读
    • "w":只写(覆盖)
    • "a":追加
    • "rb":二进制读
    • "wb":二进制写

(2) fclose()

  • 功能:关闭文件
  • 原型int fclose(FILE *stream);

(3) fprintf()

  • 功能:向文件打印格式化输出
  • 原型int fprintf(FILE *stream, const char *format, ...);

(4) fscanf()

  • 功能:从文件读取格式化输入
  • 原型int fscanf(FILE *stream, const char *format, ...);

(5) fread()fwrite()

  • 功能:用于二进制文件的读写
  • 原型
    • size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
    • size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

文件操作示例

#include <stdio.h>
int main() {
    FILE *fp = fopen("example.txt", "w");
    if (fp == NULL) {
        perror("Error opening file");
        return -1;
    }
    fprintf(fp, "Hello, World!\n");
    fclose(fp);
    return 0;
}

三、常见问题与注意事项

  1. 输入缓冲区清理

    • 输入函数可能会留下垃圾(如回车符),影响后续输入
    • 清理方法:while(getchar() != '\n'); 或在格式字符串中使用空格
  2. 变量前加&

    • scanf()中,除字符串外,所有变量前都需要加&
  3. 格式说明符匹配

    • 输入输出时,格式说明符必须与数据类型匹配
    • 例如:%d对应int%f对应float
  4. 头文件包含

    • 所有输入输出函数都需要#include <stdio.h>

四、总结

C语言的输入输出函数是程序与用户交互的基础,主要分为标准输入输出(用于控制台)和文件输入输出(用于文件操作)。掌握printf()scanf()是学习C语言的第一步,它们能处理大多数基本的输入输出需求。随着程序复杂度增加,需要使用文件操作函数处理更复杂的输入输出场景。

这些函数构成了C语言程序交互的基石,是编写实用程序不可或缺的部分。