Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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_Random - Fatal编程技术网

文本冒险游戏-随机将房间连接在一起-C

文本冒险游戏-随机将房间连接在一起-C,c,random,C,Random,我正在尝试创建一个文本冒险游戏,包含7个房间,信息保存在文件中。这个问题和我的答案很相似,但是答案对我没有帮助。我已经用了一种不同于那个OP的方式来处理我的程序,所以我不知道如何使用那个答案来帮助我 我们的想法是,你有7个房间,分别命名为A、B、C、D、E、F和G。创建房间后,我需要将它们随机连接起来。每个房间需要3到6个随机连接。如果房间A连接到B、C和D,则这些房间中的每个房间都应连接到A。然后将此信息保存到文件中,稍后再读取 到目前为止,我对本节的代码是: char *connec

我正在尝试创建一个文本冒险游戏,包含7个房间,信息保存在文件中。这个问题和我的答案很相似,但是答案对我没有帮助。我已经用了一种不同于那个OP的方式来处理我的程序,所以我不知道如何使用那个答案来帮助我

我们的想法是,你有7个房间,分别命名为A、B、C、D、E、F和G。创建房间后,我需要将它们随机连接起来。每个房间需要3到6个随机连接。如果房间A连接到B、C和D,则这些房间中的每个房间都应连接到A。然后将此信息保存到文件中,稍后再读取

到目前为止,我对本节的代码是:

    char *connections[7];
    int j = 0;
    int randomRoom;
    for (j = 0; j <= randConnections; j++) {
             randomRoom = rand() % 10;
             if (randomRoom == randName) {
                     randomRoom = rand() % 10;
             } else {
                    connections[j] = names[randomRoom];
    }
我知道可能有更有效的方法来做到这一点,但在这一点上,我只是想让代码正常工作,稍后再处理效率问题


我已经在谷歌上搜索了很多次,现在真的把头撞到墙上了。任何帮助都将不胜感激。如果有任何更多的代码我应该张贴或任何其他信息让我知道

C样式的字符串可能会有点混乱。纯C中的“字符串”是字符数组。C中的数组与指针密切相关。事实上

char myCString[6] = "hello";
你可以定义

char * myCString = "hello";
事实上,在第一种情况下,单独使用myCString只会返回指向第一个元素的指针。[]运算符只是一个方便的解引用和增量运算符。因此
&(myCString+1)
变成
myCString[1]

长话短说,C中的“字符串”数组实际上是一个字符数组*——指向字符数组第一个元素的指针

您试图将其分配给单个字符,这在逻辑上没有意义。如果你想让连接真正成为字符串,就按照kcraigie说的去做

这是我找到的一些备份,恐怕有更多的细微差别,我不是专家,但这是要点-


这可能看起来很荒谬,因为java就是C语言。C++的标准库包括一个字符串构造,就像您熟悉的一样。它是一个封装“原始”C数组的类,控制对它的访问,并像Java和C#string一样管理它。现代C++最佳实践试图远离原始数组。你还会注意到,没有什么能阻止你调用MyCString[4000],它只会从一个不知名的地方抓取一段内存,然后做一些天知道的事情。C中的原始数组没有边界检查。小心

尝试将数组声明为:
char*connections[7]这确实解决了一个问题,谢谢!仍然不确定如何正确地建立连接,并以两种方式建立连接。
char * myCString = "hello";