簡體   English   中英

C-使用strtok

[英]C - Using strtok

我只有使用strtok從txt中獲取“ int”。

但是,編寫的代碼有一些錯誤。

第一行的輸出是好的,但是不能轉到下一行。

我該如何處理?

while (!feof(fp))

{
    fgets(buffer, 100, fp);
    printf("%s", buffer);
    num = strtok(buffer, " ,\t\n");
    i = atoi(num);
    while (num != NULL){
        printf("num = %s\n", num);
        num = strtok(NULL, ",\n");
        x = atoi(num);
        num = strtok(NULL, "\t");
        y = atoi(num);
        printf("i = %d, x = %d, y = %d\n", i, x, y);
    }
}

文本文件 :

1   1,1   2,2    3,3
2   1,2   2,4    3,6   4,8
3
4   1,4
5

您提出的問題似乎還不太清楚。

  • 如果要解析整數,然后解析由實數組成的變量序列,則問題是您使用逗號而不是點作為小數點。

  • 變量i,x和y似乎是全局變量(它們是int嗎?),因為它們沒有在代碼塊中聲明,但是它們接收atoi()-array提供給整數的int值。 除此之外,某些行可能具有三個以上的值。

  • 您在strtok()中使用的定界符似乎與文本的實際定界符不匹配。

  • 在驗證尚未到達文件末尾之前,您正在處理fgets()讀取的行。

修復樣本的方法

while (fgets(buffer, sizeof buffer, fp)){
    num = strtok(buffer, " ,\t\n");
    i = atoi(num);
    num = strtok(NULL, " ,\t\n");
    while (num != NULL){
        x = atoi(num);
        num = strtok(NULL, " ,\t\n");
        y = atoi(num);
        printf("i = %d, x = %d, y = %d\n", i, x, y);
        num = strtok(NULL, " ,\t\n");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM