首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请教C语言中double类型变量动态分配内存时用什么输入格式

2012-03-02 
请问C语言中double类型变量动态分配内存时用什么输入格式?C语言中double类型变量动态分配内存时用什么输入

请问C语言中double类型变量动态分配内存时用什么输入格式?
C语言中double类型变量动态分配内存时用什么输入格式?比如: 

double* pData = NULL; 
pData = (double*)malloc(sizeof(double)); 
scanf("%lf",pData); 


我在TC下编译时都没出错,在运行时都出了问题,运行到该行时就终止了,没任何提示。 
而在VC下可以用%lf;但%f不行,会输出错误的答案。 
或者在TC下不能给动态分配的变量这么赋值?可是我又试了一下int类型的,运行是正确的;然后又再试了下float,结果跟double的情况一个样。啥回事哦大虾们

[解决办法]
scanf("%lf", *pData);
[解决办法]
汗楼上的。。

看LZ的程序应该没什么问题,是不是别的地方出问题了。。
[解决办法]
同意2楼的意见
[解决办法]
这是一个很老的问题啦,vc对浮点scanf支持欠佳,改用cin吧!
[解决办法]
编译器的问题, 换g++就没问题了.
[解决办法]
在VC中,%f表示的是float类型,%lf表示的才是double类型,两者表示的大小是不一样的,

C/C++ code
int main(void){    double *pData = NULL;    pData = (double*)malloc(sizeof(double));    if ( pData != NULL)    {        printf("please input the number.\n");        scanf("%f\n",pData);        printf("the numble is %f\n",*(float*)pData);        free(pData);    }            return 0;}
[解决办法]
1.看你程序应该没什么理由在scanf那里停下来,手头没TC编译器试。
2.double型的输出应该是lf,即:
printf("%lf", *pData); 
3. 你这样来尝试下会不会有问题??
double pData;
scanf("%lf", &pData);
printf("%lf\n", pData);

4. 如果上面的没问题,那TC也太。。。

BTW:VC也不一定只可跑C++的,运行C也蛮好。不一定要用TC的,那个太古老了,还是换个编译器吧。
[解决办法]
C/C++ code
int _tmain(int argc, _TCHAR* argv[]){    float a;    scanf("%f", &a);    printf("a = %f\n", a);    printf("sizeof(long float)=%d\n , sizeof(long float)=%d\n, sizeof(double)=%d!\n",        sizeof(float),        sizeof(long float) ,sizeof(double));    double a1;    scanf("%f", &a1);//明显不是输入的数字,因为之定义4个字节,确要使用8个字节    printf("a = %f\n", a1);            double a2;    scanf("%lf", &a2);    printf("a = %f\n", a2); //这里有不稳定因素,输出用f而不是lf就只能输出4个字节,如果不超出还是可以的    return 0;}
[解决办法]
试试这个,加点初始化。
另外,%lf与%f确实不同,不过不会在输入时出问题的
C/C++ code
double* pData = NULL; pData = (double*)malloc(sizeof(double));*pData = 0.0;scanf("%lf", pData);
[解决办法]
scanf:floating point formats not linked 
------------------------------
很多年前的TC的经典BUG。。。。。。程序没加载浮点运算库
在程序一开始加几句废话,比如
double tmp;
dmp = 2.0 * 3.0;
然后就正常了
楼上的 *pData =0.0 应该可以
总之要显式的使用一下浮点数
[解决办法]
VC下double输入格式应为lf
scanf("%lf",pData); 
printf("%f",*pData);

scanf("%lf",pData); 
printf("%lf",*pData);
试过后都可以
[解决办法]
TC的编译器原因吧
之前还遇到个问题在TC下的代码,所有的定义都得在函数的最开头才能执行,在多个变量的定义中间如果有其它代码就会编译不过,在VC下程序就是OK的
而且TC的可视化做的不太好啊
[解决办法]
VC下
scanf("%lf", pData);
TC下,加了初始化,再输入,象16楼的
*pData = 0.0;


scanf("%lf", pData);



[解决办法]
floating point formats not linked
貌似 没链接浮点库?

热点排行