从Char Array输出到控制台

时间:2014-12-18 13:55:36

标签: c++ arrays char

即时创建一个必须使用CHAR而不是字符串的刽子手游戏。我想知道如何从Char数组中选择一个随机单词并将其作为符号显示在控制台上,例如******而不是单词。我现在的阵列;谢谢。

char words [6][10] =
{
    "Pistachio",
    "Avocado",
    "Salami",
    "Bologna",
    "Christmas",
    "Giraffes",
};

这是我到目前为止所知道的(我知道它并不是很有点困惑)

cout <<"Test " <<words <<endl;

并且刚刚输出一个随机数?

4 个答案:

答案 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 *,但不知道 char ** 数组,也不知道指向C字符串的指针(字符数组)。所以它只打印 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]);
}