由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C的fscanf的问题
相关主题
C中的精度问题[合集] visual c++中读二进制图形文件的奇怪问题
Perl and Matlab Question帮忙看看这几段程序有问题吗?
请教一个用matlab tcpip函数的问题c的问题
c++ 中如何把str转换为float?关于buffer overflow
大家帮我看看C文件输入函数fprintf的问题FORTRAN读文件时这样的错误怎么办?
问个matlab 数据读入的问题python读入文件疑问
linux怎么读入一个超过有超过1B integer的binary file? (转载)hibernate问题
ask a question about struct in C programming问几个问题
相关话题的讨论汇总
话题: fscanf话题: tempprice话题: char话题: name话题: float
进入Programming版参与讨论
1 (共1页)
l******0
发帖数: 313
1
需要从一个文件里读数据写入一些变量里
文件是这样的格式 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,请问哪里出
错了?
另外,有更优化的方法么
非常感谢
l********a
发帖数: 1154
2
你能保证|前面的长度吗?如果都是4,下面的可以
int main()
{
FILE *fid = fopen("data.txt","r");
float num = 0.0;
char name[10] = {0};
fscanf(fid,"%4c|%f",&name,&num);
fclose(fid);
printf("Name: %s\nNumber: %f\n",name,num);
return 0;
}
如果分隔符不是|而是空格,用
fscanf(fid,"%s %f",&name,&num)好使
%s String of characters. This will read subsequent characters until a
whitespace is found (whitespace characters are considered to be blank,
newline and tab).
l******0
发帖数: 313
3
你好,谢谢,不能保证都是4,但可以保证长度小于6

【在 l********a 的大作中提到】
: 你能保证|前面的长度吗?如果都是4,下面的可以
: int main()
: {
: FILE *fid = fopen("data.txt","r");
: float num = 0.0;
: char name[10] = {0};
: fscanf(fid,"%4c|%f",&name,&num);
: fclose(fid);
: printf("Name: %s\nNumber: %f\n",name,num);
: return 0;

b***i
发帖数: 3043
4
不就是读入直到|,然后读入|到一个char里面,然后读入一个浮点数吗
int main(){
char line[]={"GOODG|256.5"};
char name[10];
float x;
char c;
sscanf(line, "%[^|]%c%f", name, &c, &x);
printf("%s\n", name);
printf("%f", x);
return 0;
}

【在 l******0 的大作中提到】
: 需要从一个文件里读数据写入一些变量里
: 文件是这样的格式 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,请问哪里出
: 错了?

m*******l
发帖数: 12782
5
c++ can do a better job

【在 l******0 的大作中提到】
: 需要从一个文件里读数据写入一些变量里
: 文件是这样的格式 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,请问哪里出
: 错了?

d***i
发帖数: 344
6


【在 b***i 的大作中提到】
: 不就是读入直到|,然后读入|到一个char里面,然后读入一个浮点数吗
: int main(){
: char line[]={"GOODG|256.5"};
: char name[10];
: float x;
: char c;
: sscanf(line, "%[^|]%c%f", name, &c, &x);
: printf("%s\n", name);
: printf("%f", x);
: return 0;

f****p
发帖数: 18483
7
fscanf需要地址作为参数,那个ticker本来就是字符串地址,所以没事,588.88应该直
接定义一个浮点数变量,然后用&取变量地址。fscanf自动进行转换。

【在 l******0 的大作中提到】
: 需要从一个文件里读数据写入一些变量里
: 文件是这样的格式 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,请问哪里出
: 错了?

1 (共1页)
进入Programming版参与讨论
相关主题
问几个问题大家帮我看看C文件输入函数fprintf的问题
一个c语言的问题问个matlab 数据读入的问题
C的问题,困惑中linux怎么读入一个超过有超过1B integer的binary file? (转载)
请教一道c/c++题ask a question about struct in C programming
C中的精度问题[合集] visual c++中读二进制图形文件的奇怪问题
Perl and Matlab Question帮忙看看这几段程序有问题吗?
请教一个用matlab tcpip函数的问题c的问题
c++ 中如何把str转换为float?关于buffer overflow
相关话题的讨论汇总
话题: fscanf话题: tempprice话题: char话题: name话题: float