好的,所以我的作业给了我这个常数:
const char *suits[] = {"Hearts", "Diamonds", "Clubs", "Spades"};
基本上它只是一个指向4个单词的表指针! 简单吧?
那么我要做的就是将每个单词导入另一个表格!
所以我创建了一个新表:
char table[30];
在主结构中,我想以某种方式导入单词" Diamonds"! 在指针的表格中,这个词位于第二位。所以它适合[1]。
当尝试使用此命令打印第二个单词时:
printf("%s", *suits[1]);
我收到错误。但使用该命令
printf("%c", *suits[1]);
我只得到" D",这只是第一个字母。那么你对我如何能够打印整个单词" Diamonds"以及如何将它复制到我在主窗体中创建的表格有任何想法?
(我只需要将西装[1]中的单词复制到新表中,然后就可以打印表格了)
非常感谢你!
答案 0 :(得分:1)
我不清楚“复制到桌子”是什么意思,但是在打印字符串时,我当然可以提供帮助。
printf("%s", suits[0]); // Prints Diamonds
我们有代码:
const char *suits[] = {"Hearts", "Diamonds", "Clubs", "Spades"};
在记忆中,这是:
suits[0] -> A pointer to memory that contains {'H', 'e', 'a', 'r', 't', 's', '\0'}
suits[1] -> A pointer to memory that contains {'D', 'i', 'a', 'm', 'o', 'n', 'd', 's', '\0'}
...
C中的字符串通常是指指向空终止内存块的指针。因此,当我们想要打印字符串时,我们会这样做:
printf("%s", <a pointer to a null terminated string>);
在这种情况下,指针位于suits[0]
,所以我们这样做:
printf("%s", suits[0]);
如果您只想将字符串"Hearts"
存储在该数组中,那么您可能正在寻找:
snprintf(table, sizeof(table), "%s", suits[0]);
或
strncpy(table, sizeof(table), suits[0]);
答案 1 :(得分:0)
要打印每个字符串,请使用printf("%s",suits[i]);
。您不需要取消引用指针。
检查this answer以更好地了解阵列存储在内存中的方式。