2014-01-06 33 views
0

我試圖動態創建一個指向文件的指針數組。要求用戶輸入要用於大小的整數,我需要創建一個具有該大小的指針數組。如何聲明一個指向文件的指針動態數組

FILE** arrOfFiles = NULL; 
printf("Enter the number of units\n"); 
scanf("%d", &numOfUnits); 
arrOfFiles = (FILE**)malloc(sizeof(FILE*)*numOfUnits); 

這是聲明好什麼我試圖做什麼?我只是不想確定。 謝謝。

+3

嘗試使用'-Wall'和'-Wextra'選項進行編譯。你有沒有看到這條線上的警告?如果是,請糾正它們。在這種情況下,如果您不確定自己是否正確地做了某些事情,那麼您應該始終服從編譯器。順便說一句,它不建議強制'malloc'的返回值。 –

+3

順便說一句,不要在malloc中輸入malloc的結果;) – dhein

+3

[不要強制轉換'malloc'的返回值](http://stackoverflow.com/questions/605845/do-i-cast -the-結果-的-的malloc/605858#605858)。 –

回答

1

您需要檢查numOfUnits的值是否在範圍(1,some_number)中,並且只在數字合理時才調用malloc。

就像評論說的那樣,不需要在C中傳遞malloc的返回值。如果這段代碼將被移植到C++,那麼您將需要cast。

+0

是的,當然,我確保輸入大於0.順便說一下,在malloc和im之後,文件** arrOfFiles打開文件即時看到在調試arrOfFiles指向爲空,這是有道理的? – user3921

+0

你也應該檢查一個高數值。如果malloc成功,它不應該指向NULL。 – egur

1

沒有必要那麼只要這個代碼不移植到C純C. CHeck this

投++它將很好地工作,而不投。

相關問題