C程序-如何将char*数组的值分配给2d char*数组

  • 本文关键字:数组 char 分配 2d 程序 c pointers
  • 更新时间 :
  • 英文 :


Im正在尝试初始化一个2d数组,该数组表示来自两个称为面和套的字符指针数组的一副牌,该数组代表牌的面和套。我收到了如下所示的各种错误,无法正确地将值添加到我的甲板以及显示我的甲板。有人能向我指出需要更改什么才能使我的代码正常工作吗?非常感谢。

#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]);
  1. arr[i][j] = *faces[j], addToString, *suit[i]没有将字符串连接在一起

这里有一些代码,但我不认为你的老师会相信这是你的代码

char *myconcat(const char *s1, const char *s2, const char *s3)
{
size_t len = strlen(s1) + strlen(s2) + strlen(s3);
char *newstr = malloc(len + 1);

if(newstr)
{
strcpy(newstr, s1);
strcat(newstr, s2);
strcat(newstr, s3);
}
return newstr;
}

char *(*initializeDeck(void))[13]
{
char *(*cards)[13] = malloc(4 *sizeof(*cards));
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 13; j++)
{
cards[i][j] =  myconcat(faces[j], " of ", suit[i]);
}
}
return cards;
}
void displayDeck(char *(*cards)[13]){
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 13; j++)
{
printf("[%s] ", cards[i][j]);
}
printf("n");
}
}

最新更新