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

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

 

  • 写回答

2条回答 默认 最新

  • 爱晚乏客游 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);
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?