2011-03-30 62 views
0

我正在從fscanf()讀取文件中的一組數字,我想將它放入數組中。問題是,數字之間用「,」隔開,如何確定fscanf應該讀取多個密碼,並在文件中找到「,」時,它會將其保存爲整數?謝謝- 如何確定逗號?

+1

請提供一些示例輸入並解釋您希望如何解析它以及結果應該如何。 – 2011-03-30 16:18:41

+1

只需在fscanf格式字符串中添加',',就像我在答案中所做的一樣。例如。使用'「%f」,而不是'「%f」'。很多人需要爲每行的最後一個數字使用一個單獨的格式字符串,以避免不得不使用',' – thkala 2011-03-30 16:27:55

+0

終止行。它適用於我,對於每行的最後一行沒有單獨的格式,只需用逗號分隔並使用「% f,「太好了,非常感謝 – Waypoint 2011-03-30 16:33:58

回答

4

這可能是一個開始:

#include <stdio.h> 

int main() { 
    int i = 0; 

    FILE *fin = fopen("test.txt", "r"); 

    while (fscanf(fin, "%i,", &i) > 0) 
     printf("%i\n", i); 

    fclose(fin); 

    return 0; 
} 

有了這個輸入文件:

1,2,3,4,5,6, 
7,8,9,10,11,12,13, 

...的輸出是這樣的:

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 

你究竟想幹什麼?

+0

謝謝,我已經嘗試過了,但沒有成功。我正在爲一些計算填充內部矩陣 - 請參閱我的編輯 – Waypoint 2011-03-30 16:26:16

+0

我在ProjectEuler問題(即不同的輸入)上嘗試了此操作。令人驚訝的是,即使每行的最後一個字符不是逗號,這似乎仍然有效。 – ComputerScientist 2016-12-29 04:56:51

0

fscanf(file, "%d,%d,%d,%d", &n1, &n2, &n3, &n4);但如果數字之間有空格將無法工作。 This answer展示瞭如何做到這一點(因爲有沒有庫函數本)

+0

只要'n1','n2' ...是指向'int'的指針,當然... – thkala 2011-03-30 16:24:54

2

我可能會使用類似:

while (fscanf(file, "%d%*[, \t\n]", &numbers[i++])) 
    ; 

的%d轉換一個數字,而 「%* [,\ t \ n]」 讀取(但不分配)的任何連續運行分隔符 - 我將它們定義爲逗號,空格,製表符,換行符,儘管對於您認爲合適的任何內容進行更改都相當簡單。

+0

+1代碼雖然很棒,但是因爲看起來他開始使用它可能沒有什麼幫助,除了能夠複製它。 – 2011-03-30 16:54:21