2015-02-09 44 views
-1

我正在做一個函數來讀取文件中的數據。文件輸入是名稱和ID#。讀取文件和使用Strtok,一些字段讀取成功,一些字段不

例如: 「喬治·華盛頓,2345678 約翰·亞當斯,3456789 托馬斯·傑斐遜,4567890」

我可以正確地所有的名字讀,但身份證號碼不正確讀取。讀入的數字都在2682824左右。這些ID都沒有接近這個數字。有時數字會上升或下降5,但留在這些數字。這是我現在的代碼。任何幫助將不勝感激。

void readDataIn(){ 
struct pres tempFill[30]; 
char s[2] = ","; 
char t[50], j[1900]; 
char *token, *token2; 
int *h; 
int i = 0, f; 
    FILE* file; 



    if((file=fopen("AssignmentOneInput.txt", "r")) != NULL){ 
    while(fgets(j, sizeof(j), file)){ 
    token = strtok(j, ","); 
    printf("%s\n", token); 
    token = strtok(NULL, "\n"); 
    printf(" %i\n", token); 

    } 


    pause; 

    } 
pause; 
fclose(file); 
return; 


} 
+0

重複的http://stackoverflow.com/q/28401475/3185968? – EOF 2015-02-09 01:59:22

回答

0

當你調用在while循環strtok秒時間,通過NULL作爲參數,而不是j

token = strtok(NULL, "\n"); 

當你在第一個參數傳遞NULLstrtok簡歷從最後一個令牌解析。當你通過j時,它會再次從j開始解析。

請檢查出strtok documentation

另一個問題是,你正在使用

printf(" %i\n", token); 

token仍然是一個字符串。 "%i"不是在此使用的正確格式說明符。您需要使用:

printf(" %s\n", token); 
+0

編輯了代碼,不幸的是它沒有改變。 – user2603473 2015-02-09 02:01:19

+0

謝謝!有效! – user2603473 2015-02-09 02:04:51