В вашей программе есть несколько ошибок - несоответствующие фигурные скобки, неопределенные переменные и т. Д. Однако наиболее важная и наиболее вероятная причина вашей проблемы заключается в том, что вы не передаете указатель на myvariable
в Ваш fscanf()
звонок. Вы можете использовать &myvariable
там, чтобы fscanf()
мог заполнить его соответствующим образом. Вам, вероятно, не нужно, чтобы строка формата была настолько сложной, либо - "%lf"
должен прекрасно работать для чтения double
. Фактически, gcc
предупреждает меня вашей строкой формата:
example.c:16: warning: zero width in scanf format
example.c:16: warning: unknown conversion type character ‘.’ in format
И тогда мой вывод становится равным 0. Попробуйте "%lf"
. Вот полный рабочий пример с вашим примером ввода:
#include <stdio.h>
#define HEIGHT 2
#define WIDTH 3
int main(void)
{
FILE *myfile;
double myvariable;
int i;
int j;
myfile=fopen("myfile.txt", "r");
for(i = 0; i < HEIGHT; i++)
{
for (j = 0 ; j < WIDTH; j++)
{
fscanf(myfile,"%lf",&myvariable);
printf("%.15f ",myvariable);
}
printf("\n");
}
fclose(myfile);
}
Пример выполнения:
$ ./example
0.000005878984580 0.001445154100000 0.000000000001245
0.000124547122350 0.124546575694500 0.012454712115140