c語言中fscanf 和動態分配陣列的問題

時間 2025-03-28 18:35:14

1樓:匿名使用者

while(!feof(data))

fsacnf(data,"%f",p);

p++;當這個迴圈結束時,p已經不再指向當初分配的空間首位址了,它已經向後移動了若干個位置。所以後面的for迴圈並不是從開頭輸出的。

2樓:左手煙雨

for(int i=0;i<3,i++)

printf("%f",p[i]);

執行這個的時候p已經不是malloc時的值了,已經++好幾次了。

修改如下:void main()

float *p=(float*)malloc(maxsize*sizeof(float));

float *q = p;

file *data=fopen("","w+")while(!feof(data))

fsacnf(data,"%f",p);

printf("%f", p]);其實列印可以放這裡。

p++;for(int i=0;i<3,i++)printf("%f",q[i]);將p改成q

c語言,怎麼用fscanf()把資料讀到動態陣列中?

3樓:風若遠去何人留

要經過如下幾個步驟:

1 開啟檔案。

2 建立動態陣列。如果事先可以預知資料總數,或者可以通過開啟的檔案獲取到需要讀取的數量,那麼這一步可以使用已知或讀取到的值來建立動態陣列。否則可以先暫定乙個大小,在實際讀取中如出現不足再用realloc函式重新分配。

3 格式化讀取資料。用scanf讀取資料。直到讀取到所有需要的資料,或者出錯為止。

4 關閉檔案。

5 使用讀取到的檔案。

下面以不確定總數的方式為例,提供乙個參考**。

假定檔名為, 所存資料均為合法int型,以空格或換行分隔。

#include

#include

int main()

printf("共讀取到%d個元素", n);

for(i = 0; i < n; i ++printf("%d", a[i]);//列印所有讀到的元素。

free(a);//程式結束,釋放記憶體。

return 0;}

4樓:網友

資料檔案格式是什麼樣的?貼上來幾行看看就好辦了。

c語言如何給動態分配的陣列賦值,C語言如何給動態分配的陣列賦值

那樣賦值也只能用可變參了.void set int value,int num,int b int malloc 3 sizeof int set b,3,4,5,6 set 設定變數,設定的數量,值1,值2. 1 當成普通陣列使用,用for迴圈即可賦值。2 例程 include include i...

C語言指標動態記憶體分配,C語言中的動態記憶體分配的用法舉例

void malloc size t size 這個函式請求分配大小為size位元組的記憶體,並返回指向該塊記憶體起始位置的指標 它接受的引數型別size t是unsigned int的一個typedef,這種型別用來表示資料型別的大小 如char型別的大小為1 位元組 它返回的是一個void 型別...

C語言動態分配記憶體為什麼總是提示警告?可以執行

北問邇 1.就算沒有free main 結束後也是會自動釋放malloc 的記憶體的,這裡監控者是作業系統,設計嚴謹的作業系統會登記每一塊給每一個應用程式分配的記憶體,這使得它能夠在應用程式本身失控的情況下仍然做到有效地 記憶體。你可以試一下在taskmanager裡強行結束你的程式,這樣顯然是沒有...