[英]Scan string and integer from file in C
我正在嘗試將文件中的值放入變量中。 我有一個fruits.txt
文件,其中包含以下數據。
bananas,5
apples,3
kiwi,7
逗號將水果的名稱與價格分開。 我的目標是將名稱放入名為fruit的字符串中,並將價格放入名為price的int
變量中,將文件指針移至下一行,然后進行打印。
FILE * fptr = fopen("fruit.txt", "r");
char fruit[10];
int price = 0;
fscanf(fptr, "%s,%d\n", fruit, &price);
printf("%s,%d\n", fruit, price);
fclose(fptr);
是我到目前為止所擁有的。 但是,我的輸出是bananas,5,0
。 看來它正確地執行了第一部分,但隨后又添加了一個,0。 有誰知道如何解決這一問題?
我的輸出是“ bananas,5,0”。 看來它正確地執行了第一部分,但隨后又添加了一個,0。
由於%s
吃了您的delimiter( ,
),因此將完整的bananas,5
放入了fruit
變量中。
如果您已經檢查了fscanf
的返回值,那么它只是返回1
,而沒有將%d
讀入price
變量。
解:
您可以只使用[^,]
來作為分隔符讀取字符串,
並將fscanf
放入while
循環中檢查2的返回值。
樣例代碼。
FILE * fptr = fopen("fruit.txt", "r");
char fruit[10];
int price = 0;
while(fscanf(fptr, "%9[^,],%d%*[\n]", fruit, &price) == 2)
printf("%s,%d\n", fruit, price);
fclose(fptr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.