Hey guys! I am new to Linux and currently I am working on evolutionary computation which involves CEC13 benchmark.
I found on the CEC13 website that
For Linux Users:
Please change %xx in fscanf and fprintf and do not use "WINDOWS.H".
But fscanf and fprintf seem to follow the same syntax in Linux C++, what does it refer to ? What should I modify?
The related code is as follows.
#include <WINDOWS.H>
#include <stdio.h>
#include <math.h>
#include <malloc.h>
#include <mex.h>
.....
if (fpt==NULL)
{
printf("\n Error: Cannot open input file for reading \n");
}
.......
for (i=0; i<cf_num*nx*nx; i++)
{
fscanf(fpt,"%Lf",&M[i]);
}
....
Would you please give me some help about how to modify the code? Many thanks!
BTW, if nothing changes, the output is incorrect although it can be complied.

 采纳的回答

Walter Roberson
Walter Roberson 2020-9-24

1 个投票

For Visual Studio, %Lf stands for "long double" .
long double in Windows is the same as double. long double in gcc is a larger floating point number. This can lead to incompatibilities.
You should probably be using %lf for double instead of long double: it will not make any difference for Visual Studios and it will prevent problems for other compilers.
MATLAB does not support long double.

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Dates and Time 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by