Chinaunix
标题:
求救,简单的函数使用
[打印本页]
作者:
liuyanghr
时间:
2003-02-28 14:29
标题:
求救,简单的函数使用
#include <stdio.h>;
void main()
{
char szStr1[4];
strcpy(szStr1, "222"
;
printf("szStr1 = %f\n", atof(szStr1))
}
结果:szStr1 = -3313906912442838626541985956750000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00.000000
为什么打印出来的不对呢?
作者:
liangtf
时间:
2003-02-28 14:35
标题:
求救,简单的函数使用
不应该啊。。。
作者:
channelV
时间:
2003-02-28 14:40
标题:
求救,简单的函数使用
先printf字符串看看什么内容
作者:
menp9999
时间:
2003-02-28 14:44
标题:
求救,简单的函数使用
改成这样呢?
strcpy(&szStr1, "222"
;
作者:
unicorns
时间:
2003-02-28 14:51
标题:
求救,简单的函数使用
用sscanf(szStr1, "%f", &i);
试试
好像看到过说atof有问题
作者:
liuyanghr
时间:
2003-02-28 15:15
标题:
求救,简单的函数使用
#include <stdio.h>;
void main()
{
char szStr1[4];
double dStr1;
strcpy(szStr1, "2.2"
;
dStr1 = 0.00;
sscanf(szStr1, "%f", &dStr1);
printf("szStr1 = %s\ndStr1 = %13.2f\n", szStr1, dStr1);
}
结果是:
szStr1 = 2.2
dStr1 = 3.60
为什么?
作者:
liangtf
时间:
2003-02-28 15:18
标题:
求救,简单的函数使用
什么系统?
作者:
ohmylove
时间:
2003-02-28 15:20
提示:
作者被禁止或删除 内容自动屏蔽
作者:
HopeCao
时间:
2003-02-28 15:34
标题:
求救,简单的函数使用
这样:
#include <stdio.h>;
#include <stdlib.h>;
void main()
{
char szStr1[4];
strcpy(szStr1, "2.2");
printf("szStr1 = %s\ndStr1 = %.12f\n", szStr1, atof(szStr1));
}
复制代码
好象能输出,但是总觉得不对劲!
作者:
unicorns
时间:
2003-02-28 15:51
标题:
求救,简单的函数使用
我也搞不懂这个问题
atof()在加了头文件后就可以了
但是sscanf为什么不可以用阿
会不会是数据类型的问题
把dStr1换成float试一下
作者:
sinnu
时间:
2003-02-28 15:56
标题:
求救,简单的函数使用
#include <stdio.h>;
void main()
{
char szStr1[4];
strcpy(szStr1, "222"
;
printf("szStr1 = %f\n",(float)(atoi(szStr1)));
}
这样是可以的
作者:
ohmylove
时间:
2003-02-28 15:58
提示:
作者被禁止或删除 内容自动屏蔽
作者:
unicorns
时间:
2003-02-28 16:09
标题:
求救,简单的函数使用
原帖由 "sinnu" 发表:
trcpy(szStr1, "222"
;
printf("szStr1 = %f\n",(float)(atoi(szStr1)));
}
这样是可以的
那如果是2.2的话就变成了2.0了阿
作者:
liuyanghr
时间:
2003-03-03 12:31
标题:
求救,简单的函数使用
头文件好使
作者:
雷斯林
时间:
2003-03-04 12:52
标题:
求救,简单的函数使用
这个和printf()的格式化有关,看我的试验:
#include <stdio.h>;
#include <stdlib.h>;
void main()
{
char szStr1[4];
double d;
float f;
int i;
strcpy(szStr1, "222"
;
printf("szStr1 = %s\r\n", szStr1);
i = atoi(szStr1);
f = (float)atof(szStr1);
d = atof(szStr1);
printf("szStr1 = %d, %f, %f\r\n", i, f , d);
}
输出:
$ aa
szStr1 = 222
szStr1 = 222, 222.000000, 222.000000
但如果使用你的程序输出就是
szStr1 = 0.000000
我用的是SCO UNIX。
我想大概在不同的系统上有不同的解释,与printf的实现有关系
作者:
mengwg
时间:
2003-03-04 13:24
标题:
求救,简单的函数使用
和c编译器有关
由于你未包含stdlib.h,因此c编译器把atof的返回值定义为 int
相当于 int atof(char *)
导致结果错误
如果包含stdlib.h
编译器可知道atof的原型为
double atof(const char *);
结果正确。
如果采用C++编译,由于C++的类型检查比较严格,你的程序会编译失败,但不会运行出错。
作者:
liuyanghr
时间:
2003-03-04 19:59
标题:
求救,简单的函数使用
谢谢各位
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2