2012-03-16 7 views
1

ファイルを配列に入れたいと思います。これを行うより効果的な方法はありますか?私はfgetcを使ってテキストファイルの個々の文字を取得しています。ここまで私がこれまで持っていたことがあります。ファイルを配列に解析するより効果的な方法はありますか?

while((temp_airports[i] = fgetc(airports)) != EOF) { 
     c=temp_airports[i]; 
     printf("%c",temp_airports[i]); 
     i++; 
    } 

テキストファイルの内容を配列に入れる方が効果的か、直接的な方法はありますか?私はfgetsが動作すると思うが、私はファイルのサイズを知らない。

+0

ファイルの形式を知らなくても、正確な答えは得られませんが、一般的なものは... – Jack

+0

ファイルの形式はどういう意味ですか?あなたはこのファイルを見て、そのフォーマットを見分けるのを手伝ってもらえますか? http://ece.umd.edu/class/enee150.S2012/assignments/pr2/airports.txt –

+0

あなたの質問は完全には明確ではありません。あなたの文字の配列(あなたの例のような)、または実際に文字列の配列、文字列ごとに1行をしたいですか? –

答えて

4

は、ファイル場合はASCIIで、基本的な解析能力を提供しますfscanfを使用することができます一般的な答えとして一度

0

でファイルから文字バッファーにfread機能を使用してください。

+2

ASCIIと何が関係していますか? –

+2

ファイルがASCIIではなくバイナリプレーンのデータであれば、構文解析に煩わされることなく構造体全体または整数型を 'fread'するだけです。 – Jack

+1

EBCDICはどうですか?誰もが古いEBCDICを忘れています。 –

1

まず、あなたは、ファイルのサイズを知るために、このためNilObjectのコードが必要になります。

#include <sys/stat.h> 

off_t fsize(const char *filename) { 
    struct stat st; 

    if (stat(filename, &st) == 0) 
     return st.st_size; 

    return -1; 
} 

そして、そのサイズでバッファを割り当て、関数freadを行います。

関連する問題