在 C 语言中, scanf 函数在以下几种情况下会结束输入读取: :
1. 遇到指定格式匹配失败: scanf 按照格式字符串要求读取输入。当输入数据格式与格式字符串不匹配时,就会结束读取。例如 scanf(“%d”, &num) 要求输入整数,若输入字符 a ,匹配失败, scanf 就会结束读取,输入流中的 a 会留在缓冲区。
2. 遇到空白字符: scanf 在读取非空白字符(如 %d 、 %s 等格式)时,遇到空白字符(空格、制表符 \t 、换行符 \n )会认为当前数据读取结束。比如 scanf(“%s”, str) 读取字符串,遇到空白字符就会停止读取,将已读取的非空白字符组成字符串存入 str 。
3. 达到输入字段宽度限制:如果在格式字符串中指定了字段宽度,如 scanf(“%3d”, &num) ,当输入的数字字符达到指定宽度(这里是 3 个字符)时, scanf 结束读取。例如输入 1234 ,只会读取 123 赋值给 num 。
4. 遇到文件结束标志:当从文件或标准输入读取数据时,遇到文件结束标志(在 Windows 系统中通常是 Ctrl + Z 后按回车键,在 Linux 和 macOS 系统中是 Ctrl + D ), scanf 函数会返回 EOF 并结束读取。
scanf 函数结束读取的情况多样,使用时要注意输入数据与格式字符串的匹配,以及处理可能出现的错误情况。