将数组传递给C中的函数以存储数据
我是C语言的新手,这里我尝试从文件中读取整数(用空格分隔),并将它们存储在一个名为将数组传递给C中的函数以存储数据,c,arrays,function,pointers,null,C,Arrays,Function,Pointers,Null,我是C语言的新手,这里我尝试从文件中读取整数(用空格分隔),并将它们存储在一个名为array的数组中 最初,我将array设置为NULL,然后将其传递给read\u file函数。在读取文件中,一切正常。但是,当从堆栈中弹出read\u file时,array仍然指向NULL,而不是指向read\u file加载的数据。我做错了什么 #include <stdio.h> #include <stdlib.h> #include <iostream> int
array
的数组中
最初,我将array
设置为NULL
,然后将其传递给read\u file
函数。在读取文件
中,一切正常。但是,当从堆栈中弹出read\u file
时,array
仍然指向NULL
,而不是指向read\u file
加载的数据。我做错了什么
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
int read_file(FILE *file, int *input_array);
FILE *file;
int main(){
char *pathname = " numbers.txt";
if(fopen_s(&file, pathname, "r"))
puts("File could not be opened.");
int *array = NULL;
int array_size = read_file(file, array);
int i;
for(i = 0; i < array_size; i++){
printf("%d\n", array[i]);
}
fclose(file);
std::cin.ignore();
return 0;
}
int read_file(FILE *file, int *input_array){
int array_size = 10;
input_array = (int *) malloc(array_size * sizeof(int));
int i;
for(i = 0; !feof(file) && i < array_size; i++){
fscanf_s(file, "%d", &input_array[i]);
//printf("%d\n", input_array[i]);
}
return i;
}
#包括
#包括
#包括
int read_文件(file*file,int*input_数组);
文件*文件;
int main(){
char*pathname=“numbers.txt”;
if(fopen_s(&file,路径名,“r”))
puts(“无法打开文件”);
int*array=NULL;
int array_size=读取文件(文件,数组);
int i;
对于(i=0;i
变量输入数组
通过值传递给函数。因此,实际参数array
不会更改其值。要更改数组的值
,您需要以类似以下方式向其传递引用(指针):
int read_file(FILE *file, int **input_array){ ...
然后在函数内部相应地更改对它的访问
但更好的办法可能是将预先分配的数组传递给函数,这样函数只会更改其内容,因此签名将保持不变。
input\u数组
是read\u file
的本地数组,因此当函数返回时,为其分配值的事实将丢失。如果要为变量数组
赋值,则必须将指向该变量的指针传递到函数中。即:
array_size = read_file(file, &array);
. . .
int read_file(FILE *file, int **input_array) {
. . .
*input_array = malloc(array_size * sizeof(int));
投反对票仅仅是因为你们应该在大学里,或者在你们开始写代码之前的某个时刻学会这一点。