双精度扫描的scanf格式警告

双精度扫描的scanf格式警告,c,pointers,double,scanf,C,Pointers,Double,Scanf,我正在使用的程序有一个小问题,我一直收到警告格式“%1f”需要类型“float*”,但参数2的类型为“double*”,因此我很确定这是我的scanf格式的问题 我试过到处寻找解决办法,但似乎找不到 此函数读取两个数字 void read(double *n1, double *d1) { printf("Enter the number n1: "); scanf("%1f", n1); printf("Enter the number d1: "); scan

我正在使用的程序有一个小问题,我一直收到警告
格式“%1f”需要类型“float*”,但参数2的类型为“double*”
,因此我很确定这是我的
scanf
格式的问题

我试过到处寻找解决办法,但似乎找不到

此函数读取两个数字

void read(double *n1, double *d1)
{
    printf("Enter the number n1: ");
    scanf("%1f", n1);
    printf("Enter the number d1: ");
    scanf("%1f", d1);
}

对双重数据类型使用
%lf
格式说明符。

您键入了一个错误,然后复制了它

scanf("%1f", n1);
应该写

scanf("%lf", n1);
请注意
l
(小写l)和
1
(数字1)之间的区别

%lf
代表长浮点数,它不是实际的C类型,而是区分
浮点数(
%f
)和
双浮点数(
%lf
)的一种方法。
l
可与
d
i
一起使用,以指定
长整数
u
长无符号整数

这些字符很难区分,特别是对于用于编程的固定间距字体,因此,应避免命名变量
l
ll
等,并且
long
整数常量
1l
应写入
1l

使用
scanf(%lf),n1)
用于
双重
;请注意“l”(el,而不是“一”)。
如果您是编程新手,请尝试熟悉文档,例如。例如,您可以在这里找到为
scanf
指定的格式和长度矩阵


从学习编程中获得乐趣,使用google等,并毫不犹豫地询问:-)

为各自的数据类型使用正确的格式说明符

  • float%f
  • double%lf
  • int%d
    %i
  • unsigned int%u
  • char%c
  • char*%s
  • long int%ld
  • long-long-int%lld

对于您想要的双倍
%lf
。非
%1f
。(但很容易忽略差异!)使用
“%lf”
(即“长浮点”)作为我现在看到的两个可能的副本,我觉得很愚蠢。我已经做了一个小时了。对编程来说还是相当陌生的。谢谢你的友好态度!