我正在尝试将文件中的值放入变量中。我有一个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。有人知道如何解决这个问题吗?
答案 0 :(得分:4)
我的输出是'bananas,5,0'。好像正在做第一部分 正确,但再添加一个,0。
由于%s
也占用了定界符(,
),因此将完整的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);