2015-05-26 36 views
1

我想知道如何從文本文件中讀取數據,其數據用逗號分隔;例如文本文件的第1行說: (名稱,整數,整數)。如何讀取以','分隔的文本文件中的數據C

於是,我就用這個代碼讀取的代碼,但它不工作:

while (fscanf(ifp, "%15s,%d,%d", stationName, &stationDistance, &stationDirection) == 2) { 
    strcpy(q[fileCounter].name, stationName); 
    q[fileCounter].distance = stationDistance; 
    q[fileCounter].direction = stationDirection; 
    printf ("Station Name: %s \t Distance to Central: %d \t Direction from Central: %d \n", q[fileCounter].name, q[fileCounter].distance, q[fileCounter].direction); 
    fileCounter++; 
} 

回答

2

如果Name包含空格,那麼您使用將停在那裏,但無法格式說明,你會需要

while (fscanf(ifp, "%15[^,],%d,%d", 
      stationName, &stationDistance, &stationDirection) == 3) 
{ 
} 

[符對字符集相匹配你[]內指定例如"%[0-9]"匹配所有的數字從09,^這個符號告訴fscanf()匹配的東西不是[]^後面的字符,所以你匹配除了,這是你想要的東西。

反觀"%15s"符消耗所有字符,直到15字符已出現或空格字符作爲isspace(chr) != 0出現這就是爲什麼我想,你的fscanf()只匹配兩三個值。

你是的fscanf()返回值與2代替3我猜是因爲它返回2代替3,你知道,否則不能進入中,環,以及這是一個非常糟糕的事情做,因爲你正在導致未定義的行爲,因爲三個參數中的一個可能還沒有被scanf()初始化,所以你用strcpy()複製名稱並存儲整數。

+0

你是否教過我這麼多,我完全不知道你可以做任何事情,非常感謝你,但是由於某種原因,現在它沒有進入循環? – MattSolo

+0

我將需要你從輸入文件中發佈數據。 –

+0

數據如下:「Taren Point,10,S」 - >下一行「Ashfield,6,W」 – MattSolo

相關問題