从字符数组输出到控制台

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】:

wordschar** 一个由char[10] 组成的数组。 &lt;&lt; 运算符知道如何打印简单类型(int、float)、std::string 和 char *,但不知道 char ** 数组和指向 C 字符串(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 声明为整数

以上是关于从字符数组输出到控制台的主要内容,如果未能解决你的问题,请参考以下文章

c语言字符串数组怎么输入和输出呢

vue.js怎么把字符串转化为数组

vue.js怎么把字符串转化为数组

字符串数组的空值输出

替换字符串数组Javascript中的字符

用c语言写出:输入一个字符串,把他按整数部分和小数部分输出