scanf多个变量或一个变量

时间:2019-03-31 15:36:32

标签: c

我是C语言的新手,很抱歉,如果我的问题很简单,我已经在搜索它,但没有找到任何东西。

我需要使用scanf输入四个变量

scanf("%c %d %d %d", &v1, &v2, &v3, &v4)

第一个变量可以采用两个值'c'和'q'

当我输入c然后输入其他变量时,它将进行一些计算,但是当我要退出时,我仅应输入'q'而不输入其余的变量,但是scanf在输入其余变量之前不会前进变量

总有办法解决它,我不确定是否可以使用scanf,但是如果还有其他功能,那么我不介意使用它

2 个答案:

答案 0 :(得分:2)

  

“总有办法解决”

使用fgets() ...

读取用户输入的
char buf[100];
if (fgets(buf, sizeof buf, stdin)) {

..然后对其进行扫描

  char v1;
  int v2,v2,v3;
  int cnt = sscanf(buf, "%c %d %d %d", &v1, &v2, &v3, &v4);
  if (cnt >= 1 && v1 == 'q') Quit();
  else if (cnt == 4 && v1 == 'c') Do_stuff(v2,v3,v4);
  else puts("Bad input");

答案 1 :(得分:1)

您应该为此使用多个scanfs。例如

scanf("%c", &v1);
if(v1 == 'c'){
    scanf("%d %d %d",&v2, &v3, &v4);
    /*some staff*/
}
else{
    /*another staff*/ 
}