avatar
什么时候留种比较好# gardening - 拈花惹草
l*0
1
【 以下文字转载自 Programming 讨论区 】
发信人: love1010 (学会move on), 信区: Programming
标 题: C的fscanf的问题
发信站: BBS 未名空间站 (Sat Aug 18 00:31:27 2012, 美东)
需要从一个文件里读数据写入一些变量里
文件是这样的格式 GOOG|588.88
需要将GOOG写入一个string里,然后将588.88写入一个float number里,我写了以下
code:
char tempprice[10];
char ticker[10];
fscanf(fr,"%[^|]|%[^\n]\n",ticker,tempprice);
float stockprice = stof(tempprice); //将string变成float
上面的code, ticker会正确得到GOOG,但是tempprice却无法得到588.88,请问哪里出
错了?
另外,有更优化的方法么
非常感谢
avatar
N*b
2
瓜类,豆角类是一开始结果就留种,还是要等到最后植物没什么生长力的时候留种?
avatar
A*l
3
A sequence of white-space characters (space, tab, newline, etc.; see isspace
(3)). This directive matches any amount of white space, including none, in
the input.
I have no idea what "[^\n]" exactly means... But you can use %s for sure.

【在 l******0 的大作中提到】
: 【 以下文字转载自 Programming 讨论区 】
: 发信人: love1010 (学会move on), 信区: Programming
: 标 题: C的fscanf的问题
: 发信站: BBS 未名空间站 (Sat Aug 18 00:31:27 2012, 美东)
: 需要从一个文件里读数据写入一些变量里
: 文件是这样的格式 GOOG|588.88
: 需要将GOOG写入一个string里,然后将588.88写入一个float number里,我写了以下
: code:
: char tempprice[10];
: char ticker[10];

avatar
g*x
4
第一个果实留种最好,因为生长时间长。
avatar
c*p
5
"%s|%f", ticker, price?

【在 l******0 的大作中提到】
: 【 以下文字转载自 Programming 讨论区 】
: 发信人: love1010 (学会move on), 信区: Programming
: 标 题: C的fscanf的问题
: 发信站: BBS 未名空间站 (Sat Aug 18 00:31:27 2012, 美东)
: 需要从一个文件里读数据写入一些变量里
: 文件是这样的格式 GOOG|588.88
: 需要将GOOG写入一个string里,然后将588.88写入一个float number里,我写了以下
: code:
: char tempprice[10];
: char ticker[10];

avatar
N*b
6
这样啊……我把第一个都吃了。下次改进。
avatar
l*c
7
You should read in the string and parse.
You don't know how long the first part string is or how long the number is.
So if you define:
char tempprice[10];
char ticker[10];
You have the risk of buffer overflow.
Here is my solution. I debug it as I wrote it, so it is not optimized.
it is pure C. You can get result with 2 lines of perl or python code
============================
#include
#include
#include
int main()
{
char *str = "GOOD|89.34";
char *ptoken, *ph;
char *pstr, *buffer;
int diff;
int n, numlen;
double num;

ph = str;
ptoken = strstr(str, "|");
diff = ptoken-ph;
printf("pnum=%s, diff =%d\n",ptoken, diff);
pstr = malloc(diff*sizeof(char));
memcpy(pstr, str, diff);
n = strlen(str);
numlen = (n-diff-1);
printf("n=%d, numlen=%d\n", n, numlen);
buffer = malloc(sizeof(char)*numlen);
strncpy(buffer,ptoken+1, numlen);
printf("buffer=%s\n", buffer);
num = atof(buffer);
printf("pstr=%s\n", pstr);
printf("num=%f\n", num);

free(buffer);
free(pstr);
return 0;

}
=========================================

【在 l******0 的大作中提到】
: 【 以下文字转载自 Programming 讨论区 】
: 发信人: love1010 (学会move on), 信区: Programming
: 标 题: C的fscanf的问题
: 发信站: BBS 未名空间站 (Sat Aug 18 00:31:27 2012, 美东)
: 需要从一个文件里读数据写入一些变量里
: 文件是这样的格式 GOOG|588.88
: 需要将GOOG写入一个string里,然后将588.88写入一个float number里,我写了以下
: code:
: char tempprice[10];
: char ticker[10];

avatar
m*g
8
我的十几颗白不老只种出两棵来,打算不吃都留种算了。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。