簡體   English   中英

從文件中讀取一個數字,然后在 C 中讀取一個數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM