m0_56197713
2021-05-19 00:06
采纳率: 100%
浏览 64

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;
	}
}

 

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 爱晚乏客游 2021-05-19 00:35
    已采纳

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

    scanf_s("%c%c", &a1,1, &b1,1);
    评论
    解决 无用
    打赏 举报
  • 查看更多回答(2条)

相关推荐 更多相似问题