由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - C的fscanf的问题 (转载)
相关主题
fb面试题【转】问一道C++编程题
请教一个fb面试问题Facebook phone screen
GOOG intern interview 题目Microsoft screening programming problem
An interview questionc++ 问题
看一道面试题分享A公司面经
what's the output问两个题
C的argc问题请教一道c/c++题 (转载)
攒人品 报BB面经一道C语言题
相关话题的讨论汇总
话题: char话题: numlen话题: pstr话题: buffer话题: tempprice
进入JobHunting版参与讨论
1 (共1页)
l******0
发帖数: 313
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,请问哪里出
错了?
另外,有更优化的方法么
非常感谢
A**l
发帖数: 2650
2
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];

c****p
发帖数: 6474
3
"%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];

l****c
发帖数: 838
4
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];

1 (共1页)
进入JobHunting版参与讨论
相关主题
一道C语言题看一道面试题
思科的电面,还有设计题,大牛帮看看what's the output
比较两个两个浮点数C的argc问题
一道基础的C类型转换面试题懂得有点晕攒人品 报BB面经
fb面试题【转】问一道C++编程题
请教一个fb面试问题Facebook phone screen
GOOG intern interview 题目Microsoft screening programming problem
An interview questionc++ 问题
相关话题的讨论汇总
话题: char话题: numlen话题: pstr话题: buffer话题: tempprice