从字符数组输出到控制台
Posted
技术标签:
【中文标题】从字符数组输出到控制台【英文标题】:Outputting to console from Char Array 【发布时间】:2015-02-17 08:06:21 【问题描述】:我正在创建一个必须使用 CHAR 而不是字符串的刽子手游戏。我想知道如何从 Char 数组中选择一个随机单词并将其作为符号显示到控制台,例如****** 而不是这个词。我当前的数组;谢谢。
char words [6][10] =
"Pistachio",
"Avocado",
"Salami",
"Bologna",
"Christmas",
"Giraffes",
;
这就是我到目前为止所拥有的(我知道它并不多,我有点困惑)
cout <<"Test " <<words <<endl;
那只是输出一个随机数??
【问题讨论】:
请展示您到目前为止所尝试的内容。 @Josh160 看我的回答。 我强烈建议至少阅读基本的 C 教程... 【参考方案1】:要从 cstrings 数组中输出 cstring,您需要提供该字符串的索引。
cout <<"Test " <<words <<endl;
将只打印数组第一个元素的地址,因为这是数组名称简化为的内容。所以从数组中显示的正确方式是:
cout <<"Test " <<words[indexOfTheStringYouWant] <<endl;
【讨论】:
【参考方案2】:words
是 一个由char**
char[10]
组成的数组。 <<
运算符知道如何打印简单类型(int、float)、std::string 和 char *
,但不知道 数组和指向 C 字符串(char 数组)的指针。所以它只打印char **
char *
的数组的地址。char[10]
我认为你想要的是:
for (int i=0; i< sizeof(words)/sizeof(char *); i++) cout << words[i] << " ";
cout << endl;
【讨论】:
words
是一个数组数组。它衰减到指向数组的指针char(*)[10]
,而不是char**
。
你是对的......我很快就读到了我一直使用的char *words[] = ...
,它会衰减到char **
。【参考方案3】:
如果我理解正确,您需要的是以下内容
#include <iostream>
#include <algorithm>
#include <numeric>
#include <cstdlib>
#include <ctime>
int main()
const size_t N = 6;
const size_t M = 10;
char words[N][M] =
"Pistachio",
"Avocado",
"Salami",
"Bologna",
"Christmas",
"Giraffes",
;
size_t index[N];
std::iota( index, index + N, 0 );
std::srand( ( unsigned int )std::time( nullptr ) );
std::random_shuffle( index, index + N );
for ( size_t i = 0; i < N; i++ ) std::cout << words[index[i]] << std::endl;
return 0;
程序输出可能看起来像
Giraffes
Bologna
Pistachio
Avocado
Salami
Christmas
【讨论】:
【参考方案4】:我想你正在寻找这个:
#include<cstdlib>
int v;
for(int i=0; i<10; i++)
v = rand() %6;
printf("%s\n", words[v]);
【讨论】:
我是否将 v 声明为整数以上是关于从字符数组输出到控制台的主要内容,如果未能解决你的问题,请参考以下文章