2012-11-30 78 views
0

我的朋友和我工作的一個項目,我們需要在C讀取文件用C

從文件中讀取輸入

文件看起來是這樣的:

15 25 200 
3 10 
17.99 22.99 109.99 
100 2 4 
5.99 99.99 20.00 49.99 
10 10 10 10 10 10 10 10 10 10 
3.99 5.99 7.99 8.00 5.00 5.00 5.00 6.00 7.00 9.99 
5 

我需要逐行讀取文件,並將每個值設置爲不同的變量。例如,第一行的第一個值必須設置爲變量preSalePrices,第二個值doorPrices和第三個preSales。我需要幫助弄清楚如何在每行上指定數值。例如,如何讓程序在第一行中獲得三個值,但在第二行中只有兩個值?然後是第五行的四個值,依此類推。

這裏是我的代碼,但它只是崩潰:

int main() { 
    float preSalePrices, doorPrices; 
    int preSales; 
    FILE *fp; 
    fp = ("C://Users//Jake//Desktop//Charity Ball//auction01.txt", "r"); 

    while(fscanf(fp, "%f %f %i", &preSalePrices, &doorPrices, &preSales) != EOF) { 
     printf("%f, %f, %i", preSalePrices, doorPrices, preSales);    
    } 
} 

我看了所有在互聯網上,我無法找到與此相關的具體事情。

+0

不會像這樣將整行掃描到變量中 - 一次只讀取每行一個變量。 – cegfault

+0

讀取一行,使用空格作爲分隔符分割它。請參閱http://www.cplusplus.com/reference/cstring/strtok/ – peacemaker

+0

由於您的代碼缺少對fopen()的調用,因此您應該收到編譯警告。你也應該檢查'fopen()'的返回值,雖然這個測試對於函數調用沒有幫助 - 'fp'得到一個非空指針''r「'。 –

回答

2

如果您始終知道每行中值的數量,則可以忽略行尾並逐個讀取值。

如果行結束很重要,最簡單的方法是分別讀取每行(例如fgets),然後從那裏讀取數據,使用sscanf