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裡強行結束你的程式,這樣顯然是沒有...