Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从指针打印?_C_Pointers - Fatal编程技术网

C 从指针打印?

C 从指针打印?,c,pointers,C,Pointers,好的,我有一个赋值,它给了我这个常数: const char *suits[] = {"Hearts", "Diamonds", "Clubs", "Spades"}; 基本上,它只是一个指向4个单词的表指针! 简单对吧 然后我要做的就是将每个单词导入到另一个表中 因此,我创建了一个新表: char table[30]; 在主体结构中,我想以某种方式导入里面的单词“钻石”! 在指针的表格上,这个单词位于第二位。因此,这是一个很好的例子[1] 那么,当尝试使用此命令打印第二个单词时: prin

好的,我有一个赋值,它给了我这个常数:

const char *suits[] = {"Hearts", "Diamonds", "Clubs", "Spades"};
基本上,它只是一个指向4个单词的表指针! 简单对吧

然后我要做的就是将每个单词导入到另一个表中

因此,我创建了一个新表:

char table[30];
在主体结构中,我想以某种方式导入里面的单词“钻石”! 在指针的表格上,这个单词位于第二位。因此,这是一个很好的例子[1]

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

printf("%s", *suits[1]);
我犯了一个错误。但是使用这个命令

printf("%c", *suits[1]);
我只得到“D”,这只是第一个字母。那么,你对我如何打印整个单词“钻石”有什么想法吗?我如何将它复制到我以主窗体创建的表格中

(我只需要将单词从[1]复制到新表中,然后就可以打印该表)


非常感谢

要打印每个字符串,请使用
printf(“%s”,suits[i])。您不需要取消对指针的引用。

检查以更好地了解数组在内存中的存储方式。

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

执行摘要: 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中的字符串通常指指向以null结尾的内存段的指针。因此,当我们想要打印字符串时,我们会:

printf("%s", <a pointer to a null terminated string>);
关于复制到桌子上的想法。 如果您只是想在该数组中存储字符串
“Hearts”
,那么您可能正在寻找:

snprintf(table, sizeof(table), "%s", suits[0]);


您应该确保标记语言。它帮助人们找到你的问题,也影响语法着色。我添加了C标记,因为您使用原始数组、C样式字符串和
printf
将指示该语言。同样值得注意的是:表格标签上写着“请勿使用”。它已被删除。我真的很抱歉,我没有提到,这是C@AndreasCusnir你怎么把字符数组称为“表”?它是一个包含字符的表:D如果我写“int table[10];”,那么它只会保存数字。@AndreasCusnir这叫做“数组”。是的!那是印刷工作!谢谢你,但我真的想把这个词复制到新的数组中,我将在主表中确定,然后打印里面有“钻石”这个词的数组,它位于西服[1]检查这个答案:你想要实现什么。您不能直接将一个字符数组的内容分配给另一个字符数组。谢谢!!!我想要的是@sharth给出答案的“snprintf(table,sizeof(table),“%s”,suits[0]);”
printf("%s", suits[0]);
snprintf(table, sizeof(table), "%s", suits[0]);
strncpy(table, sizeof(table), suits[0]);