我是 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
的内容不会改变。有谁知道如何解决这一问题?谢谢。
最佳答案
1)下面一行是错误的
fgets(copied_text[i],80,f);
字符串数组中一个元素字符串的大小是20
。并且您在 fgets()
函数中输入的最大字符数为 80
所以把它改成:
fgets(copied_text[i],sizeof(copied_text[0]),f);
2) 您可以更改此代码:
while (!feof(f))
{
fgets(copied_text[i],80,f);
++i;
}
与
while (i<118 && fgets(copied_text[i++],80,f));
3) 函数的输入参数
void set_up_elements(char (*array_to_populate)[20])
未在您的函数中使用。似乎您想将其填充到您的函数中,但事实并非如此,您正在使用调用者无法看到的另一个数组(本地数组)
关于c - 更改数组数据的函数 - 数据不变。 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16196965/