【发布时间】:2013-04-24 16:08:12
【问题描述】:
我是 C 新手,但几周前我已经用 pascal 编程了。在 pascal 中,如果您想更改数组数据,您可以通过引用传递,本质上是键入 var myArray。我不知道如何在 C 中做到这一点。我读过很多问题,但似乎都没有。这是我目前所拥有的。
void set_up_elements(char (*array_to_populate)[20])
{
char* buffer;
FILE *f;
f=fopen("elementList.txt","r");
char copied_text[118][20];
int i=0;
while (!feof(f))
{
fgets(copied_text[i],80,f);
++i;
}
//Close the file to free up memory and prevent leaks
fclose(f);
f = NULL;
}
这是我填充数组的代码,我将元素周期表中的元素列表读入数组copied_text。这部分有效,它成功填充了函数内部的数组。
int main()
{
char element_array[118][20];
set_up_elements(element_array);
<..>
}
这就是我试图调用它的方式。数组element_array 的内容不会改变。有谁知道如何解决这一问题?谢谢。
【问题讨论】:
-
set_up_elements(&element_array);
-
另外我认为copyed_text应该是[118][80],因为你想复制80个字符,而不是20个字符。
-
见c-faq.com/aryptr/pass2dary.html 将二维数组传递给函数
-
如果文件包含超过 118 行且一行包含超过 20 个字符,则可能会导致崩溃。你会检查那个。无论如何,在
set_up_elements函数的while循环中将copied_text替换为array_to_populate(也不需要定义新数组)。
标签: c arrays pointers reference populate