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 通常是一个更安全的选择,因为它允许你指定读取的最大字符数。

 

最近更新

  1. TCP协议是安全的吗?

    2024-04-09 00:26:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-09 00:26:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-09 00:26:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-09 00:26:02       18 阅读

热门阅读

  1. 外贸建站公司排名

    2024-04-09 00:26:02       14 阅读
  2. 前端开发教程

    2024-04-09 00:26:02       15 阅读
  3. SpringBoot实现增删改查

    2024-04-09 00:26:02       12 阅读
  4. 复试专业课问题

    2024-04-09 00:26:02       13 阅读
  5. css外边距合并和BFC

    2024-04-09 00:26:02       12 阅读
  6. Leetcode 8. 字符串转换整数 (atoi)

    2024-04-09 00:26:02       12 阅读
  7. 蓝桥杯嵌入式之模块驱动

    2024-04-09 00:26:02       14 阅读