0

我正在尝试从包含一行数据格式为 GOOG|588.88 的文件中读取

我想将 GOOG 复制到股票行情中,并将 588.88 复制到浮动股票价格中

我编写了以下代码来完成 fr 是文件指针的工作

char tempprice[10]; 
char ticker[10];
fscanf(fr,"%[^|]|%[^\n]\n",ticker,tempprice);
float stockprice = stof(tempprice); //change string to float

该代码适用于股票行情,但不适用于股票价格。换句话说,GOOG 被成功复制到ticker,而 588.88 没有。任何人都可以帮助我吗?

有没有更好的代码?谢谢。

4

2 回答 2

1

我想我会:

char tempprice[10]; 
char ticker[10];
char tmp_chr = fgetc(fr);
char *tmp_ptr = ticker;
while (tmp_chr != '|')
{
  *tmp_ptr++ = tmp_chr;
  tmp_chr = fgetc(fr);
}
*tmp_ptr = '\0'
tmp_chr = fgetc(fr);
tmp_ptr = tempprice;
while (tmp_chr >= '0' && tmp_chr <= '9' || tmp_chr == '.')
{
  *tmp_ptr++ = tmp_chr;
  tmp_chr = fgetc(fr);
}
float stockprice = stof(tempprice); //change string to float

……但那只是我。=] 这很奇怪,我喜欢正则表达式,但无法忍受 scanf 机制。还有谁?

于 2012-08-18T05:20:35.047 回答
0

1)我同意user30997:我认为scanf“伪正则表达式”比它的价值更麻烦。恕我直言...

2)但是,我相信这是您正在寻找的解决方案:

#include <stdio.h>

int
main (int argc, char *argv[])
{
    char str[] = "GOOG|5.88";
    char price[80], ticker[80];
    int iret = sscanf (str, "%[^|]%*[|]%s", price, ticker);
    printf ("iret=%d, price=%s, ticker=%s...\n",
        iret, price,  ticker);
    return 0;
}

输出:iret=2, price=GOOG, ticker=5.88...

于 2012-08-18T05:49:56.353 回答