C语言---输入和输出

文章目录

  • [1. 格式化输入输出](#1. 格式化输入输出)
  • [2. 字符输入输出](#2. 字符输入输出)
  • [3. 字符串输入输出](#3. 字符串输入输出)
  • [4. 代码综合示例](#4. 代码综合示例)
  • [5. 常见陷阱与注意点](#5. 常见陷阱与注意点)

C 语言的输入输出(I/O)并不是语法本身的一部分,而是通过标准库 <stdio.h> 中的函数实现的。

1. 格式化输入输出

这是最常用的方式,通过格式控制符来处理不同类型的数据。

printf():输出到屏幕

bash 复制代码
printf("格式字符串", 变量列表);

常用占位符:
%d:整数 (int)
%f:浮点数 (float/double)
%c:单个字符 (char)
%s:字符串
%p:指针地址
%.2f:保留两位小数

scanf():从键盘输入

bash 复制代码
scanf("格式字符串", &变量地址);

注意:必须使用取地址符 &(字符串数组名除外),因为 scanf 需要知道变量的内存地址才能修改它的值。

局限:scanf("%s", str) 遇到空格、制表符或换行符会停止读取。

2. 字符输入输出

专门用于处理单个字符。

putchar(ch):向屏幕输出一个字符。

getchar():从键盘读取一个字符(返回值为 int,以处理 EOF)。

bash 复制代码
char c = getchar();
putchar(c);

3. 字符串输入输出

puts(str):输出字符串并自动换行。

fgets(str, size, stdin):推荐的字符串输入方式。它比 gets() 安全,因为它限制了读取长度,防止缓冲区溢出。

bash 复制代码
char name[20];
fgets(name, sizeof(name), stdin); // 读取一行,包括空格
puts(name);

4. 代码综合示例

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

int main() {
    int age;
    float height;
    char name[50];

    printf("请输入姓名: ");
    fgets(name, sizeof(name), stdin); // 读取带空格的姓名

    printf("请输入年龄和身高: ");
    scanf("%d %f", &age, &height);   // 读取整数和浮点数

    printf("\n--- 个人信息 ---\n");
    printf("姓名: %s", name);
    printf("年龄: %d 岁\n", age);
    printf("身高: %.2f cm\n", height);

    return 0;
}

5. 常见陷阱与注意点

1、缓冲区残留:scanf 读取数字后,换行符 \n 会留在缓冲区中。如果后面紧跟一个 getchar() 或 fgets(),它们会直接读取这个换行符而导致"跳过"输入。

2、解决方法:在 scanf 后使用 while(getchar() != '\n'); 清空缓冲区。

3、安全性:永远不要使用 gets(),因为它不检查目标数组的大小,极易导致程序崩溃或被黑客利用。

4、返回值:scanf 返回成功读取的项目数。在处理复杂输入时,检查返回值可以判断输入是否合法。

相关推荐
炸膛坦客4 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
灯澜忆梦5 小时前
GO_并发编程---定时器
开发语言·后端·golang
-银雾鸢尾-5 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-5 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
大模型码小白6 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
段一凡-华北理工大学8 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe8 小时前
C++——多态
开发语言·c++
心平气和量大福大9 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf
从零开始的代码生活_11 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
云小逸11 小时前
【C++ 第七阶段:模板、泛型编程与工程综合详解】
开发语言·c++