簡體   English   中英

從C中的文件掃描字符串和整數

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

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