【发布时间】:2021-12-25 17:15:28
【问题描述】:
我试图从 2 个字符指针数组中初始化一个 2d 数组,该数组表示一副纸牌,这些指针数组称为 faces 和 suit,表示纸牌的面孔和花色。我收到如下所示的各种错误,无法弄清楚如何正确地将值添加到我的牌组以及显示我的牌组。谁能向我指出需要更改哪些内容才能使我的代码正常工作?谢谢。
#include <stdio.h>
#include <string.h>
#include "functions.h"
char **deck[4][13];
char *suit[] = {
"Hearts",
"Diamonds",
"Clubs",
"Spades"};
char *faces[] = {
"Ace",
"Two",
"Three",
"Four",
"Five",
"Six",
"Seven",
"Eight",
"Nine",
"Ten",
"Jack",
"Queen",
"King",
};
char** initializeDeck(char** arr)
{
char addToString[] = " of ";
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 13; j++)
{
arr[i][j] = *faces[j], addToString, *suit[i]
}
}
return arr;
}
void displayDeck(char** arr){
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 13; j++)
{
printf("[%s] ", **arr[i][j]);
}
printf("\n");
}
}
错误:
functions.c:35:37: warning: expression result unused [-Wunused-value]
arr[i][j] = *faces[j], addToString, *suit[i];
^~~~~~~~~~~
functions.c:35:50: warning: expression result unused [-Wunused-value]
arr[i][j] = *faces[j], addToString, *suit[i];
^~~~~~~~
functions.c:46:30: error: indirection requires pointer operand ('int' invalid)
printf("[%s] ", **arr[i][j]);
【问题讨论】:
-
解释一下你认为这个声明在做什么
arr[i][j] = *faces[j], addToString, *suit[i]?提示 - 它没有将字符串连接在一起。 -
@0___________ 老实说,这就是我的想法,我在某个地方看到了一种连接字符串的方法
-
那你需要回到你的课本上。顺便说一句,整个代码没有太大意义。您需要重新考虑完全重写它。
**arr[i][j]- 你需要重读你书中的“指针和数组”一章。在此之前,很难帮助你 -
@0___________ 我的意思是我知道我的卡片组保存了指向字符串的指针,我只是无法找到用其他数组中的其他指针初始化它的语法
-
否 - 您的
arr指向 char 的指针。 c中的字符串是一个字符数组。所以你需要有指向char指针的指针。您需要为字符串分配空间。你不能这样索引它