将字符串从文本文件转换为数字

时间:2016-08-19 12:01:13

标签: c io

我在处理C中的文件时遇到了一些困难。我已经知道如何用C语言读取和写入文件,但我所能做的就是阅读和追加。如果我想读取字符串并将它们转换为数字(int),我该怎么做?

例如:

mytextfile.txt包含以下数据:

12345 30 15
 2111  9 20
  321 17  7

现在对于每一行,我想使用第一个数字作为价格变量,下一个数字作为数量,最后一个数字作为折扣。我的问题是我如何将三个数字存储在一个变量上,以便我可以将它们用作整数(或字符串)?

我的输出应该是基于每行列出一个值(结果)的价格,数量和折扣的计算金额...

1 个答案:

答案 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)
    ;