c语言scanf函数中输入两个%c类型变量报错

比如扑克牌的tjqka,想将其转换为10,11,12,13,14

这样写哪里出问题了?vs总是报错,并且如果只使用a1一个变量则不报错,加上b1了以后就会报错

#include<stdio.h>
char a1, b1;    a1为数值,b1为花色  花色姑且用csdh四种表示
int main()
{
	scanf_s("%c%c", &a1, &b1);
	if (a1 >= 97)	//发牌为tjqka时候转换为数字
	{
		if (a1 == 116)	//t转换为10
		{
			(int)a1;
			a1 = 10;
		}
		if (a1 == 106)	//j转换为11
		{
			(int)a1;
			a1 = 11;
		}
		if (a1 == 113)	//q转换为12
		{
			(int)a1;
			a1 = 12;
		}
		if (a1 == 107)	//k转换为13
		{
			(int)a1;
			a1 = 13;
		}
		if (a1 == 97)	//a转换为14
		{
			(int)a1;
			a1 = 14;
		}
		printf("数值为%d,花色为%c", a1, b1);
		return 0;
	}

这样无法运行

只输入一个变量则可以运行

#include<stdio.h>
char a1, b1;
int main()
{
	scanf_s("%c", &a1);    //删去了b1
	if (a1 >= 97)	//发牌为tjqka时候转换为数字
	{
		if (a1 == 116)	//t转换为10
		{
			(int)a1;
			a1 = 10;
		}
		if (a1 == 106)	//j转换为11
		{
			(int)a1;
			a1 = 11;
		}
		if (a1 == 113)	//q转换为12
		{
			(int)a1;
			a1 = 12;
		}
		if (a1 == 107)	//k转换为13
		{
			(int)a1;
			a1 = 13;
		}
		if (a1 == 97)	//a转换为14
		{
			(int)a1;
			a1 = 14;
		}
		printf("数值为%d,花色为", a1);
		return 0;
	}
}

 

scanf_s格式错误了,这个和scanf多个一个参数。详情可以看看https://blog.csdn.net/qq_43309823/article/details/95386759

scanf_s("%c%c", &a1,1, &b1,1);

 

scanf_s用错了。这样scanf_s("%c %c , &a, 1,&b,1); //字符a输入1,用于限定大小,两个"%c之间有空格