scanf函数没有正确保存值

问题描述 投票:1回答:1

同时使用温控功能,这是我已经定义内scanf的,到我已通过全球化志愿服务青年传递给该函数不改变的值在所有的阵列内变化的值,而被双重型。

当我的占位改变来自:scanf函数(“%1F”,&X)以scanf函数(“%d”,&X)它正常工作,但我需要用双打这个项目。

int main()
{
double varArray[MAX];
zeroFill(varArray);
}


void fill(double *array) {
    for(int i =0; i<MAX; i++){
    printf("what is index %d?\n", i);
    scanf("%f",(array+i));
    printf("%f \n", *(array+i));
}

代替它,它改变为0.000000或jiberish数目该索引处改变值:

 what is index 0?
 1
 0.000000
 what is index 1?
 2
 0.000000
 what is index 2?
 3
 -0.000000
 what is index 3?
 4
 0.000000
 what is index 4?
 5
 0.000000
 what is index 5?
 6
 0.000000
 what is index 6?
 7

182043948477041810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000

所以对于输入3和7已经返回-0.000000和一个V大的数字。然而,这并不一致,这样其他的投入将给类似输出

c printf scanf
1个回答
3
投票

要编写scanfdouble的结果,使用%lf%ffloat

不要用%d使用double%dint

(打印时,无论是%lf%f可以用于无论是floatdouble,这是因为主叫float时,或调用在其中的参数对应的参数,以double或任何功能时printf值被自动提升到...值声明没有原型的任何功能。)

© www.soinside.com 2019 - 2024. All rights reserved.