gpt4 book ai didi

c - 如何将临时值分配给二维数组

转载 作者:行者123 更新时间:2023-11-30 14:41:05 25 4
gpt4 key购买 nike

所以我有一个二维结构数组,用于存储 csv 文件中的数据。我正在从文件中读取字符串,然后我想将它们在二维数组中的值指定为该字符串。因此,例如位置 [0][0] 将是“红色”,位置 [1][1] 将是“蓝色”或其他。问题是我正在从文件中读取字符并将它们存储在临时字符串中,然后我想将该临时字符串值分配给我所在的当前位置。所以我将温度设置为“红色”,我希望 [0][0] 为“红色”,然后它从文件中读取更多内容,并且温度现在为“蓝色”,我希望 [0][1] 为“蓝色” ”。当我分配 [0][0]=temp ,然后 [0][1]=temp 时,它们会互相覆盖(因为它是一个指针)。我已经尝试过 strdup(temp) 但这似乎并不能解决问题,或者它们有时仍然会互相重写。我知道我可以使用 strcpy 但对于 strcpy 我必须有另一个字符串来将其复制到,所以我尝试每次只创建一个新的 char 数组,但这也不起作用。它仍然被重写。我知道如果每次分配一个值时我都创建一个具有新名称的新 char 数组并指向该 char 数组,我可以解决这个问题,但这是针对一个非常大的 csv 文件,所以我将不得不创建大约 1000 万个char 数组,我不知道该怎么做,似乎应该有一个更简单的方法。

非常感谢任何帮助,谢谢!

struct node {
char* value;
};

char temp[500];
struct node ** arrayofnodes[35];
for(int i=0; i<35; i++) {
arrayofnodes[i] = malloc(test * sizeof (struct node));
for(int j=0; j<test; j++) arrayofnodes[i][j] = malloc(sizeof (struct node));
}


//(all of this below happens inside a function because it is going to be called like 10 million times)
arrayofnodes[row][count]->value=temp; //way 1
arrayofnodes[row][count]->value=strdup(temp); //way 2
char fun[500];
strcpy(fun,temp);
arrayofnodes[row][count]->value=fun;//way 3

最佳答案

arrayofnodes[i] = malloc(N * sizeof (struct node)); 为 N 个结构留出足够的空间。你想要的是 N 个结构指针的空间。

但是我不认为这是你的主要问题。只有“方式 2”有效 - 您确实需要为您读取的每个新字符串创建存储。 “way 1”是复用temp存储,“way 3”是复用'fun'存储,一旦退出该函数就会失效。

如果“方式 2”不适合您,我会查看生成 rowcount 的代码。这些索引是否总是分别小于 35test

关于c - 如何将临时值分配给二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55151069/

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