我在处理C中的文件时遇到了一些困难。我已经知道如何用C语言读取和写入文件,但我所能做的就是阅读和追加。如果我想读取字符串并将它们转换为数字(int
),我该怎么做?
例如:
mytextfile.txt包含以下数据:
12345 30 15
2111 9 20
321 17 7
现在对于每一行,我想使用第一个数字作为价格变量,下一个数字作为数量,最后一个数字作为折扣。我的问题是我如何将三个数字存储在一个变量上,以便我可以将它们用作整数(或字符串)?
我的输出应该是基于每行列出一个值(结果)的价格,数量和折扣的计算金额...
答案 0 :(得分:0)
#define MAXLINE 80
typedef struct {
double cost, qty, disc;
} item;
int readitem(FILE *fp, item *itm)
{
char buf[MAXLINE];
if (fgets(buf, MAXLINE, fp) == NULL)
return 0;
return sscanf(buf, "%lf%lf%lf", &itm->cost, &itm->qty, &itm->disc);
}
readitem
函数将获取下一条记录,并将其读入itm
指针。您可以在循环中调用该函数以获取所有项目:
#define MAXITEMS 255
item arr[MAXITEMS];
size_t i;
FILE *fin;
for (i = 0; i < MAXITEMS && readitem(fin, arr + i); ++i)
;