【发布时间】:2019-06-20 23:49:53
【问题描述】:
我需要从两个不同的 char 数组中获取字符,将它们连接(而不是相加)在一起并将它们存储到相关的 int 数组索引中。然后,我需要在调用该索引时将 ASCII 值显示为两个字符放在一起。例如,我在一个 char 数组中有“4”,在另一个 char 数组中有“A”。然后我希望将“A4”存储到 int[5] 中。当我调用 int[5] 时,我想看到“A4”。
以下是我目前尝试过的。
int main( int argc, char *argv[] )
{
short cards[52];
char faces[] = {'A','1','2','3','4','5','6','7','8','9','J','Q','K'};
char suit[] = {'S','D','H','C'};
for(int i = 0; i<52;i++){
if(i<14){
cards[i] = (char)(10*(suit[0] - '0')+ faces[i] - '0');
}else if(i<27){
cards[i] = (char)(10*(suit[1] - '0')+ faces[i-14] - '0');
}else if(i<40){
cards[i] = (char)(10*(suit[2] - '0')+ faces[i-27] - '0');
}else if(i<53){
cards[i] = (char)(10*(suit[3] - '0') + faces[i-40] - '0');
}
}
printf("%c", cards[5]);
}
【问题讨论】:
-
啊,作业。我认为这个问题需要一个字节的转变。
-
我希望将“A4”存储到 int[5] 中。当我调用 int[5] 时,我想看到“A4”。 -- 你说的是
cards,它的类型是short [52],而不是“int”,因此 不能“存储'A4'”,而只能是short整数值。在谈论代码时,表达的准确性很重要。调用printf( "%c", ... )需要int参数,而不是short,并将其转换为unsigned char,丢失您宝贵的西装/面部“编码”并打印单个字符。你在10*(suit[0] - '0' )那里所做的事情在几个层面上也是错误的。 -
投票结束,“不清楚你在问什么”。也许退后一步,问一个关于你真正想要达到的目标的问题——你已经很纠结已经在尝试something了,对于this的任何答案> 问题必须先解开。
-
关于为什么您的西装/面孔编码不起作用的更多提示。
suit[0]是'S'。'S' - '0'是 35...,乘以 10,是 350,超过了您可以存储在char中的最大值,这就是您将结果转换为的值(在存储之前short数组...)。无论您编写该代码时的想法是什么,它都没有按预期工作。 -
您是否看到您得到的答案基本上是如何告诉您放弃所有代码并尝试不同的方法?这是不清楚的——你描述的目标与你发布的代码完全不符。一个完整的答案必须解决您完全损坏的代码和您真正想要实现的目标。这就是为什么我 - 无意冒犯你,因为你是新来的 - 认为这是一个糟糕的问题,并投票结束这个问题,这样你就可以写出一个更好、更清晰的问题。
标签: c arrays char type-conversion int