gpt4 book ai didi

创建多个文件并且每个文件都打印完全相同的东西--C

转载 作者:太空宇宙 更新时间:2023-11-04 08:20:53 24 4
gpt4 key购买 nike

<分区>

我正在用 C 开发一个文字冒险游戏,这已经成为我生存的祸根。我正在努力解决并取得进展,但是,我遇到了一个我似乎无法弄清楚的大问题。

事情是这样的:我需要创建 7 个文件,然后在每个文件中打印有关每个房间的信息。

一个文件的例子是:

    ROOM NAME: Chapel
CONNECTION 1: Arenas
CONNECTION 2: Pantry
CONNECTION 3: Forest
ROOM TYPE: START_ROOM

每个文件都应该有不同的名称、不同的连接和不同的类型。但是,当我运行我的程序时,它会在每个文件中打印完全相同的内容。

我的程序很长,所以我不确定问题出在哪里,所以我只写我创建文件的位置并调用函数写入它——如果你们需要查看更多,请告诉我.这也只是 main 和 createRoom() 函数的一部分。

    int main() {

int buffer = 260;
int pid = getpid();
char *dirName = malloc(buffer);
char *prefix = "bonnc.rooms.";
snprintf(dirName, buffer, "%s%d", prefix, pid);

struct stat st = {0};
if (stat(dirName, &st) == -1) {
mkdir(dirName, 0777);
}

char rm1[260];
snprintf(rm1, 260, "%s/room1.txt", dirName);
roomFile1 = fopen(rm1, "w+");
createRoom(roomFile1, connections1, 1);

char rm2[260];
snprintf(rm2, 260, "%s/room2.txt", dirName);
roomFile2 = fopen(rm2, "w+");
createRoom(roomFile2, connections2, 2);

fclose(roomFile1);
fclose(roomFile2);
}

void createRoom(FILE *fp, char *conn[6], int roomNumber) {
srand(time(NULL));
int randName = rand() % 10;
int randType = rand() % 3;
int randConnections = rand() % (6 -2) +2;

int j = 0;
for (j = 0; j <= randConnections; j++) { //I do have additional code in here for testing of duplicates, but that isn't essential to the problem
randomRoom = rand () % 10;
conn[j] = names[randomRoom];
}

fprintf(fp, "ROOM NAME: %s\n", names[randName]); //names & randName are declared earlier
int t = 0;
for (t = 0; t <= randConnections; t++) { //randConnections defined earlier
fprintf(fp, "CONNECTION %d: %s\n", t+1, conn[t]; //conn[t] defined earlier
}
fprintf(fp, "ROOM TYPE: %s\n", types[randType]); //types & randType defined earlier
}

因此,当我使用 room1 和 room2 调用 createRoom 时,每个文件中都会打印完全相同的内容,即使每次调用 createRoom 函数时都应生成新的随机名称、随机连接和随机类型。

有什么想法吗?我是 C 的新手并且还在学习,所以如果有任何我应该更改的困惑代码,请告诉我。谢谢!

更新:随机数不是全局的,它们在 createRoom() 函数中。我添加了这段代码,以及如何填充 connections[1] 和 connections[2] 的一部分。希望这些信息有助于澄清问题!

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com