gpt4 book ai didi

c - 从函数返回的指针访问数组内容

转载 作者:行者123 更新时间:2023-11-30 18:04:34 24 4
gpt4 key购买 nike

我尝试编写一个程序,该程序使用函数读取数据,存储在数组中,然后尝试将数组返回到 main() 进行排序过程。这是我所拥有的

     #include <stdio.h>
#include <stdlib.h>
#define RESERVED_ARRAY_SIZE 100

int* read_data_from_files()
{
int* arr = (int*) malloc(sizeof(int) * 50);

int arr_count;
int status;
int i,j ;

arr_count =0;
i=0;
FILE *cfPtr;
if ((cfPtr = fopen ("score.dat", "r"))== NULL)
{
printf("File cannot be opend\n");
}
else
{
fscanf(cfPtr, "%d", &arr[i]);
printf("%5d%5d\n", i, arr[i]);

while (!feof (cfPtr))
{
++i;
++arr_count;
status = fscanf(cfPtr, "%d", &arr[i]);

if (status == EOF)
{
break;
}

else if (status != 1)
{
fprintf (stderr, "Error input\n");
getchar();
}

if (arr_count >= RESERVED_ARRAY_SIZE)
{
fprintf(stderr, " The number of array is over.\n");
getchar();
}

printf("%5d%5d\n", i, arr[i]);
}
fclose (cfPtr);
}
printf("arr_count=%d\n", arr_count);
return arr;
}

int main()
{
int i;
int arr_count;
int* arr = (int*) malloc(sizeof(int) * 10);
arr = read_data_from_files();
arr_count = sizeof(arr)/sizeof(arr[0]);
printf("this check the size of array%d", arr_count);
for (i=0; i<9; i++)
{
printf("%d ", i);
printf("%d", *arr[i]);
}
selection_sort(arr, arr_count);

getchar();
return 0;
}

我的问题是1. 如果函数不能返回 2 个值,我应该如何将函数中的数组大小(程序中的 arr_count)传递给 main()?2. 如果函数只返回数组的指针到main(),我能算出main中数组的大小吗?我应该怎么办 ?非常感谢您的助手。

最佳答案

不,您无法自动计算出尺寸。返回多个值的标准方法是将指针传递给要在其中存储额外返回值的变量:

int* read_data_from_files(int *result_size)
{
...
*result_size = arr_count;
...
return arr;
}

int main()
{
int arr_count;
int *arr = read_data_from_files(&arr_count);
...
}

关于c - 从函数返回的指针访问数组内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7563402/

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