我有下面的代碼:`讀一個動態數組從一個文件功能
#include <stdio.h>
#include <stdlib.h>
void load_from_file(int A[], int *n);
int main()
{
int *A;
A = (int*)malloc(0);
int count = 0;
int i;
load_from_file(A, &count);
for(i = 0; i < count; i++)
{
printf("A[%d]=%d ", i, A[i]);
printf("\n");
printf("&A[%d]=%p \n\n", i, &A[i]);
}
return 0;
}
void load_from_file(int A[], int *n)
{
FILE* fp;
int temp, i;
fp = fopen("data.txt", "r");
if (fp == NULL)
{
printf("error!!");
exit (1);
}
fscanf(fp, "%d", &temp);
*n = temp;
A = (int*) realloc(A, temp * sizeof(int));
if (*A == NULL)
{
printf("error realloc!!");
exit(1);
}
for(i = 0; i < temp; i++)
{
fscanf(fp, "%d", &A[i]);
}
for(i = 0; i < temp; i++)
{
printf("A[%d]=%d ", i, A[i]);
printf("\n");
printf("&A[%d]=%p \n\n", i, &A[i]);
}
fclose(fp);
}
我想讀取文本文件到一個數組。 文件的第一行有數組元素的個數,第二行是數字元素。 我們通過realloc創建數組。 但是出了點問題..... 我有一些補丁,打印數組元素的地址。
但可惜的是,他們是不同的(不是所有的時間)的函數中,函數外,雖然數組通過引用傳遞(我想...)
請告訴我哪裏是錯誤,我該如何解決這個問題。
在此先感謝...
迪米特里
你能給我一點data.txt文件,幾個樣本? – Claudiordgz
您正在向函數傳遞一個指針,但您需要將指針傳遞給該函數的指針,以便該函數可以修改調用代碼中的值('main()'),或者從函數返回指針。 –
for examle:第一行:3(表示3個元素),即n = 3,創建一個包含3個元素的數組。第二行:2 3 4.我們應該有A [0] = 2,A [1] = 3,A [2] = 4。這發生在函數內部,但功能外有完全不同的值和不同的地址... – user3434833