首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >c语言输入输出函数

c语言输入输出函数

作者头像
用户12004530
发布2026-01-23 14:46:13
发布2026-01-23 14:46:13
1110
举报

输入输出函数

printf()

用于标准化输出,也是最常用的输出函数

  • 支持多种格式说明符(%d, %f, %s, %c等)
  • 可以控制输出格式(宽度、精度、对齐等)
代码语言:javascript
复制
#include <stdio.h>
int main() 
{
    int age = 25;
    float salary = 7500.50;
    char name[] = "张三";

    printf("姓名: %s\n", name);           // 字符串输出
    printf("年龄: %d岁\n", age);          // 整数输出
    printf("工资: %.2f元\n", salary);     // 浮点数输出,保留2位小数
    printf("八进制: %o, 十六进制: %x\n", age, age); // 不同进制输出
    return 0;
}

scanf()

从标准输入到读取格式化输入

  • 需要传递变量的地址(使用&运算符又被称为取地址符)
  • 格式字符串中的空格会匹配任意数量的空白字符
  • 读取字符串时要小心缓冲区溢出 
代码语言:javascript
复制
#include <stdio.h>

int main() {
    int num1;
    char num2;
    scanf("%d", &num1);  printf("%d\n", num1); 
    scanf("%c", &num2); printf("%c", num2); 
    
    return 0;
}

但这里并没有运行成功,因为VS认为scanf不安全,一般有两种解决方案

1.将scanf替换为scanf_s(不常用)

2.在头文件上面添加宏定义“#define  _CRT_SECURE_NO_WARNINGS”,这样就可以用scanf了(常用)

、但是大家会发现,我输入的是12和w,但最后只输出12

  1. 先用 scanf("%d", &num1) 读取一个整数,用户输入整数后会按下回车键(\n)确认输入。
  2. %d 格式符只会读取数字字符,回车键(\n)会被留在输入缓冲区中。
  3. 接下来执行 scanf("%c", &num2) 时,%c 格式符会直接读取缓冲区中残留的 \n(而不会等待用户输入新的字符)。
  4. 最后 printf("%c", num2) 输出的其实是 \n(换行符),导致看起来像 “只输出了数字”。

所以现在我们来解决这个问题,我们有两种解决方案,第一种就是用另一个函数

getchar,用于读取第一个输入的值后面的回车符

  • 功能:从 stdin 读取单个字符(包括空白字符如 \n)。
  • 原型:int getchar(void);
  • 返回值:成功返回读取的字符(ASCII 码),失败或读到文件尾返回 EOF。

第二种方式就是在输入的"%c"前面加一个空格" %c",利用空格来跳过缓冲区中的空白字符,从而避免残留的换行符被误读为输入字符,

putchar

  • 功能:用于输出单个字符。但一个单引号里面最多只能有4个字符(在使用putchar函数情况下,并且只会输出最后一个字符),双引号用来表示字符串,

puts

  • 功能:输出字符串,并自动追加换行符 \n。
  • 原型:int puts;
  • 参数:s 为待输出的字符串(需以 \0 结尾)

vs中输入输出函数不只有这几个,但足够使用,后续遇到会补充。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-25,如有侵权请联系 [email protected] 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 [email protected] 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 输入输出函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档