Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 双转换字符串_C_String - Fatal编程技术网

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
而不是
float

man scanf说您需要
l
修饰符来读取双精度:

fscanf(fp, "%lE %lE...

等等。

%E
浮动
s一起工作;对于
double
s,您必须使用
%lE


遗憾的是,
printf
scanf
之间的不一致性在这里没有帮助(
printf
不支持
float
s,因为
float
类型的所有可变参数都隐式转换为
double
,但是
scanf
确实对这两种FP类型产生了影响)

编译时会收到警告,而不是运行时。