I need to read and write REAL acalars from and to file. Please advise how to correct the following
blocks of code. 'Short' and 'REAL' are mandated by the modelling software that I use.
Thank you in advance.
John Weldon
__________________________
Read REAL scalar from file
void /*FUNCTION*/ rdrarr0( char *filnam, REAL narray )
Warning C4477 'fscanf_s': format string '%f' requires an argument of type 'float *', but variadic
argument 1 has type 'double'
_______________________________
Write REAL scalar to file
void /*FUNCTION*/ wtrarr0( char *filnam, REAL nscal )
Warning C4024 'fprintf_s': different types for formal and actual parameter 2
Error C2440 'function': cannot convert from 'REAL' to 'const char *const
Warning C4133 'function': incompatible types - from 'char [13]' to 'FILE *const
Error (active) E0167 argument of type "REAL" is incompatible with parameter of type "const char
*const"
'Short' and 'REAL' are mandated by the modelling software that I use.
c++ has a fundamental 'short' integer, there is no 'Short'
As for 'REAL' c++ doesn't recognise what that data type is either and you will have to define/convert/export (via your separate modelling software perhaps if it has auto conversions to CSV or similar filing) to make it readable.
PS Using C++ instead of C wouldn't be a bad move too.
> 'fscanf_s': format string '%f' requires an argument of type 'float *', but variadic argument 1 has type 'double'
change the format flag to lf, and take the address of the variable you want to write (¿is this just one number?) refi = fscanf_s( file1, "%lf \r\n", &narray);
now the second error, ¿don't you have syntax highlight? ¿don't you see `file1' in a weird colour? fprintf_s( "file1, %f \r\n", nscal );
your quotes are wrong fprintf_s( file1, "%f \r\n", nscal ); (also, note the %f flag and no memory address this time)
Edit: given that you are trying to modify the parameter in the first function, it shouldn't be passed by value