当前位置: 首页 > news >正文

c语言中有哪些格式说明符,在scanf 会在遇到空白字符(空格、制表符或换行符)时停止读取(即scanf会忽略空格)

在C语言的 scanf 函数中,有几个格式说明符在遇到空白字符(包括空格、制表符和换行符)时会停止读取。这些格式说明符通常用于读取特定类型的输入数据。以下是一些常用的格式说明符:

  1.%d 或 %i:用于读取整数。当 scanf 遇到非数字字符(包括空白字符)时,它会停止读取。

int num;  
scanf("%d", &num); // 读取一个整数,遇到空白字符或非法字符时停止

  2.%f%e%E%g 或 %G:用于读取浮点数。这些格式说明符在遇到非数字字符或字符串表示结束时停止读取。

float f;  
scanf("%f", &f); // 读取一个浮点数,遇到空白字符或非法字符时停止

  3.%c:用于读取一个字符。这个格式说明符比较特殊,它会读取输入流中的下一个字符,无论它是不是空白字符。如果你希望 scanf 在读取字符时跳过空白字符,你需要在 %c 之前显式地放置一个空格作为格式字符串的一部分。

char ch;  
scanf(" %c", &ch); // 注意前面的空格,它告诉scanf跳过任何前导空白字符

  4.%s:用于读取字符串。这个格式说明符会在遇到空白字符时停止读取,并将读取的字符串(不包括终止的空字符)存储在提供的字符数组中。注意,%s 不会检查目标数组的大小,可能导致缓冲区溢出。为了避免这个问题,通常推荐使用 fgets 函数来读取字符串。

char str[50];  
scanf("%s", str); // 读取一个字符串,直到遇到空白字符或达到数组大小限制(未检查)

  5.%[:这是一个格式说明符的变体,用于读取一个字符集合。它可以配合一组字符使用,并读取直到遇到不在该集合中的字符为止,包括空白字符。

char set[10];  
scanf("%[abcd]", set); // 读取一个由 'a'、'b'、'c' 或 'd' 组成的字符串,直到遇到其他字符或输入结束

    请注意,在使用 scanf 时应该非常小心,特别是当读取字符串时,以避免缓冲区溢出和未定义行为。在实际应用中,fgets 通常是一个更安全的选择,因为它允许你指定读取的最大字符数。

 

相关文章:

  • Verilog语法——按位取反“~“和位宽扩展的优先级
  • ADB 操作命令及其详细用法
  • 蓝桥杯小白入门赛第9场第5题 无理数位数查询
  • 跨越网络边界:借助C++编写的下载器程序,轻松获取Amazon商品信息
  • 关于项目中遇到的一些form表单校验
  • 常规的k8s的监控指标
  • 京东滑块验证逆向分析与算法还原
  • 合并主分支到子分支
  • 设计模式总结-外观模式(门面模式)
  • 前端三剑客 —— CSS (第五节)
  • 【Linux】进程初步理解
  • 12-1-CSS 常用样式属性
  • CentOS运行Py脚本报错illegal instruction故障处理
  • 智能化办公时代来临:AI助你解放双手
  • 16:00面试,16:06就出来了,问的问题有点变态。。。
  • 【WPF应用33】WPF基本控件-TabControl的详解与示例
  • 什么是机器学习?
  • 【Linux】在 Linux 上进行网络测速
  • Plonky2.5:在Plonky2中验证Plonky3 proof
  • C#学习笔记 面试提要
  • 五部门:开展新就业形态劳动者劳动权益保障水平提升专项行动
  • 外媒称菲方允许菲官员窜台,国台办:应停止在台湾问题上玩火
  • 光明网评“泉州梦嘉商贸楼不到5年便成危楼”:监管是否尽职尽责?
  • 运动健康|不同能力跑者,跑步前后营养补给差别这么大?
  • 民生访谈|规范放生活动、提升供水品质……上海将有这些举措
  • 助力企业高质量出海,上海静安发放服务包、服务券