[英]Read from file a number and after that an array in C
如何從文件中讀取數字和數組之后。 我的意思是我的文件看起來像這樣:3 7 8 9
3 是組件的數量,7、8 9 是數組的其他組件,arr[1]、arr[2]、arr[3]。
執行所需功能的一種方法是:
首先,打開文件進行閱讀:
FILE *fp = fopen( "filename.txt" );
然后檢查對fopen()
的調用是否成功並處理任何錯誤:
if( ! fp )
{
perror( "fopen to read filename.txt failed" );
exit( EXIT_FAILURE );
}
注意: perror()
將您的錯誤消息和系統認為錯誤發生的文本原因輸出到stderr
。 這就是錯誤消息應該是 output 的地方。
保留一個變量來保存以下值的計數:
int maxLoops;
然后讀取第一個數字並將該數字用作循環的最大迭代次數,當然,檢查錯誤
if( fscanf( fp, "%d", &maxLoops ) != 1 )
{
fprintf( stderr, "fscanf to read loop count failed\n" );
exit( EXIT_FAILURE );
}
注意:當某些input format specifier
(在本例中%d
)失敗時, scanf()
系列函數不會設置errno
,因此需要使用fprinf()
類的方法向 output 發送錯誤消息。
注意: scanf()
系列函數返回成功input format conversions
(或 EOF)的次數
注意: exit()
和EXIT_FAILURE
通過以下方式暴露:
#include <stdlib.h>
然后,使用 C 的可變數組長度功能為文件中的以下條目保留一個數組
int dataArray[ maxLoops ];
現在,設置將讀取數據的 rest 的循環
for( int i = 0; i < maxLoops; i++ )
{
對於每次通過循環讀取另一個條目到數組中,當然,檢查錯誤
if( fscanf( fp, "%d", &dataArray[i] ) != 1 )
{
fprintf( stderr, "fscanf for data value failed\n" );
exit( EXIT_FAILURE );
}
} // end the loop
然后,在做任何其他事情之前進行清理:
fclose( fp );
您如何處理數據取決於您自己。 您可能希望使用循環打印出每個數據值,類似於:
for( int i = 0; i < maxLoops; i++ )
{
printf( "entry %d = %d\n", i, dataArray[i] );
}
注意:調用printf()
時不需要獲取變量的地址(除非那是你想要打印的)。 但是,在輸入變量時,如調用fscanf()
時需要變量的地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.