2012-03-16 16 views
1

我想把一個文件放入一個數組中。有沒有更有效的方法來做到這一點?我使用fgetc來獲取文本文件的單個字符。這是我到目前爲止。是否有更有效的解析文件到數組的方法?

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

是否有更有效或直接的方式將文本文件的內容放入數組中?我認爲fgets可以工作,但我不知道文件的大小。

+0

不知道文件的格式很難給出準確的答案,但只是一般的.. – Jack 2012-03-16 15:32:10

+0

你是什麼意思的文件格式?你能看看這個文件,並幫助我確定格式嗎? http://ece.umd.edu/class/enee150.S2012/assignments/pr2/airports.txt – 2012-03-16 15:34:46

+0

你的問題並不完全清楚。你想要一個字符數組(例如你的例子)還是實際上是一個字符串數組,每個字符串一行? – 2012-03-16 15:39:18

回答

4

從文件使用fread功能char緩衝區一次

0

作爲一個籠統的回答,您可以使用fscanf將提供基本的解析能力,如果文件在ASCII。

+2

什麼是ASCII與任何東西? – 2012-03-16 15:34:55

+2

如果文件不是ASCII碼,而只是二進制的普通數據,那麼你只需要'fread'整個結構或整數類型而不用打擾解析。 – Jack 2012-03-16 16:34:14

+1

EBCDIC呢?每個人都會忘記可憐的老EBCDIC。 – 2012-03-16 16:36:18

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。

相關問題