C 双转换字符串
我有以下代码:C 双转换字符串,c,string,C,String,我有以下代码: FILE *fp; double Data[9][7]; int i=0,k; fp = fopen ( "dstest 2.mod", "r" ) ; fscanf(fp, "%E %E %E %E %E %E %E*[ ]", &Data[i][0], &Data[i][1], &Data[i][2], &Data[i][
FILE *fp;
double Data[9][7];
int i=0,k;
fp = fopen ( "dstest 2.mod", "r" ) ;
fscanf(fp, "%E %E %E %E %E %E %E*[ ]",
&Data[i][0],
&Data[i][1],
&Data[i][2],
&Data[i][3],
&Data[i][4],
&Data[i][5],
&Data[i][6] );
但每当我运行它时,都会收到以下警告:
Read.c:12:警告:格式“%E”要求类型为“float*”,但参数3的类型为“double*”
它适用于所有参数(数据[i][j])。我不知道怎么了。当我使用浮点数据而不是双精度数据时,问题就消失了。但这不符合我的要求 使用
%lE
指定一个double
而不是floatman scanf说您需要l
修饰符来读取双精度:
fscanf(fp, "%lE %lE...
等等。%E
与浮动
s一起工作;对于double
s,您必须使用%lE
遗憾的是,printf
和scanf
之间的不一致性在这里没有帮助(printf
不支持float
s,因为float
类型的所有可变参数都隐式转换为double
,但是scanf
确实对这两种FP类型产生了影响)编译时会收到警告,而不是运行时。