从指针打印?

时间:2014-10-06 19:04:29

标签: c pointers

好的,所以我的作业给了我这个常数:

const char *suits[] = {"Hearts", "Diamonds", "Clubs", "Spades"};

基本上它只是一个指向4个单词的表指针! 简单吧?

那么我要做的就是将每个单词导入另一个表格!

所以我创建了一个新表:

char table[30];

在主结构中,我想以某种方式导入单词" Diamonds"! 在指针的表格中,这个词位于第二位。所以它适合[1]。

当尝试使用此命令打印第二个单词时:

printf("%s", *suits[1]);

我收到错误。但使用该命令

printf("%c", *suits[1]);

我只得到" D",这只是第一个字母。那么你对我如何能够打印整个单词" Diamonds"以及如何将它复制到我在主窗体中创建的表格有任何想法?

(我只需要将西装[1]中的单词复制到新表中,然后就可以打印表格了)

非常感谢你!

2 个答案:

答案 0 :(得分:1)

我不清楚“复制到桌子”是什么意思,但是在打印字符串时,我当然可以提供帮助。

执行摘要:

printf("%s", suits[0]); // Prints Diamonds

C中的字符串是什么,内存是什么样的?

我们有代码:

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以更好地了解阵列存储在内存中的方式。