【发布时间】:2015-11-05 11:48:19
【问题描述】:
我一直在尝试将程序从 Java 转换为 C,它是手表的模拟器并显示我正在使用 Ascii 艺术的时间。我已将所有数字 (0-9) 存储在 2D 字符数组 (fx. 9) 中:
char nine[7][5] = {
{ '0', '0', '0', '0' },
{ '0', ' ', ' ', '0' },
{ '0', ' ', ' ', '0' },
{ '0', '0', '0', '0' },
{ ' ', ' ', ' ', '0' },
{ ' ', ' ', ' ', '0' },
{ ' ', ' ', ' ', '0' }
};
我现在有一个函数,它的任务是转换存储在 int 数组中的时间(fx. 22:04:59,将在数组中存储为 220459)。该函数应该为每个数字返回相应的 Ascii 艺术,以便我最终可以调用打印时间(以 ascii 形式)的函数,该函数采用 6 个 char[][] 参数。
所以简而言之,我需要知道用哪 6 个参数来调用这个函数:
void printScreen(char hourFirstDigit[7][5], char hourSecondDigit[7][5], char minuteFirstDigit[7][5], char minuteSecondDigit[7][5], char secFirstDigit[7][5], char secSecondDigit[7][5])
在 java 中,我的解决方案是简单地创建一个返回 char[][] 数组的函数,然后是 10 种情况 (0-9) 的 switch 语句,(这里是前几行):
char timeToAsciiArt[][](int digitNumber, int small) {
switch (timeRightNow[digitNumber]) {
case 0:
return zero;
}
可能的解决方案: 我已经读到那里至少有两种可能的问题解决方案(通常),1.用指向数组的指针替换。 2. 用结构包装。
我的想法: 1.我真的不知道如何返回一个指向数组的指针(有人可以解释一下如何以 case 0: 为例吗?:)
【问题讨论】:
-
char (*timeToAsciiArt(int, int))[7][5] {switch(/**/){case 0: return &zero;}}。或者:char (*timeToAsciiArt(int, int)[5] {switch(/**/){case 0: return zero;}} -
非常感谢,我最终使用了您的解决方案 :)。
标签: c arrays pointers return-type