scanf和getchar执行时被跳过是怎么回事

 时间:2024-10-11 19:12:14

1、我们咸犴孜稍先来看一种情况。#include <stdlib.h>#include <stdio.h>int main(){ ch锾攒揉敫ar *name,*no; char flag; do{ printf("请输入姓名:"); scanf("%s",&name); printf("请输入学号:"); scanf("%s",&no); printf("\n\n按任意键继续输入,退出请输入q!\n\n"); scanf("%c",&flag); }while(flag != 'q'); return 0;}在逻辑上,这种是不会出错的,那么实际运行情况如何呢?输入学号回车后,直接跳到下一次输入,也就是跳过了scanf("%c",&flag);的执行。

scanf和getchar执行时被跳过是怎么回事

3、单步执行后,没有输入,flag的值被赋值为10,相应的ascii值是回车符。

scanf和getchar执行时被跳过是怎么回事

5、但是,作为一个char类型的变量,用字符串的输入方式虽然程序能正常运行,但是这种做法是不安全的。通过下图我们可以看到每次都只取第一个字母。

scanf和getchar执行时被跳过是怎么回事
  • 戴维宁等效电路求法与图解
  • C语言中float是什么意思?
  • c语言中 %c表示什么
  • C语言中的函数如何声明和使用?
  • c语言如何生成随机数
  • 热门搜索
    赞比亚旅游 美国旅游签证办理流程 春秋旅游官网 长春旅游网 遵义旅游必去景点 达美旅游网 新婚旅游 潮州旅游景点大全 赴日旅游 雾灵山旅游