我正试图用以下内容读取字符和数字:

char c;
char plus = '+';
int last;
if(scanf("%c%d",&c,&last)!=2 || last<0){
       printf("fail\n");
       return 1;
};

//trying to test it
if(plus==c){
    // code
}

但是当我启动程序,输入+100时,它会抛出“fail”,因为scanf没有成功。但如果我只输入100就行了。为什么只有一个字符(+)和数字(100)时“fail”会被打印出来,如果我只是键入数字,为什么就不会打印出来。

最佳答案

您的代码很好,但a除外;请尝试以下操作:

 #include <stdio.h>

int main(  )
{
  test();
 }

 int test()
 {
  char c;
  char plus = '+';
  int last;
  if ( scanf( "%c%d", &c, &last ) != 2 || last < 0 )
  {
    printf( "fail\n" );
    return 1;
  }   /////////////  YOU HAD UNNEEDED ; HERE
  else
  {
    printf( "\nyou entered:\n%c,%d", c, last );
    getchar(  );
  }
  //trying to test it
  if ( plus == c )
  {
// code
  }
}

关于c - 在C中读取一个字符和一个数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33578539/

10-13 05:55