即时创建一个必须使用CHAR而不是字符串的刽子手游戏。我想知道如何从Char数组中选择一个随机单词并将其作为符号显示在控制台上,例如******而不是单词。我现在的阵列;谢谢。
char words [6][10] =
{
"Pistachio",
"Avocado",
"Salami",
"Bologna",
"Christmas",
"Giraffes",
};
这是我到目前为止所知道的(我知道它并不是很有点困惑)
cout <<"Test " <<words <<endl;
并且刚刚输出一个随机数?
答案 0 :(得分:0)
要从cstrings数组输出cstring,您需要提供该字符串的索引。
cout <<"Test " <<words <<endl;
只打印数组第一个元素的地址,因为这是数组名称减少的地址。所以从数组中显示的正确方法是:
cout <<"Test " <<words[indexOfTheStringYouWant] <<endl;
答案 1 :(得分:0)
words
是 a 一个char**
char[10]
数组。 <<
运算符知道如何打印简单类型(int,float),std :: string和char *
,但不知道 数组,也不知道指向C字符串的指针(字符数组)。所以它只打印char **
char *
数组的地址。char[10]
我认为你想要的是:
for (int i=0; i< sizeof(words)/sizeof(char *); i++) cout << words[i] << " ";
cout << endl;
答案 2 :(得分:-1)
如果我已正确理解您需要的是以下内容
#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
答案 3 :(得分:-2)
我认为你正在寻找这个:
#include<cstdlib>
int v;
for(int i=0; i<10; i++)
{
v = rand() %6;
printf("%s\n", words[v]);
}