【发布时间】:2019-05-12 19:20:05
【问题描述】:
我真的被这个问题困了好几天了..
下面的程序是一个更大程序的一部分,它要求用户输入一张卡片,例如。 2d 代表(2 颗钻石)。我的问题出在函数“rank”中,我向它发送了一个字符串指针,使用 sscanf 它会找出用户输入的数字和字符。假设用户输入了 2d,程序继续进入这个(否则 if(suit1 != 'c' || suit1 != 'd' || suit1 != 'h' || suit1 != 's') 我真的不明白为什么,请帮忙?
#include <stdio.h>
#include <stdlib.h>
void rank (const char *s);
int main(){
char text [20];
printf("enter 2d");
fgets(text, 4, stdin);
rank(text);
return 0;
}
void rank ( const char *s) {
int num;
char suit1;
if((sscanf(s,"%d %c", &num , &suit1 )) == 2 ){
if(num == 0 || num == 1){
printf("bad rank 0 or 1");
return 0;
}
else if(suit1 != 'c' || suit1 != 'd' || suit1 != 'h' || suit1 != 's'){
printf("Bad suit1!\n");
return 0;
}
else
printf("ok");
}
}
【问题讨论】: