[英]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.