Есть код, считывающий конфигурацию из текстового файла. Содержимое файла (значения, разделенные пробелами):
100 1690 Var1 A 1 0 0
101 1694 Var2 A 1 0 0
102 1698 Var3 A 1 0 0
1000 1000 Var4 na 1 0 0
1001 1001 Var5 na 1 0 0
5000 2807 Var6 na 1 0 0
Файл читаю в цикле:
FILE *fp;
if ((fp = fopen(config, "r")) == NULL) {
printf("Can not open config file %s\n", config);
return -1;
}
int var_ioa;
int var_id;
char var_name[255];
char mu[10];
bool sporadic;
float cyclic_interval;
char aperture[10];
var_meas_unit var_mu;
while (!feof(fp)) {
fscanf(fp, "%d%d%s%s%d%f%s\n", &var_ioa, &var_id, var_name, mu, &sporadic, &cyclic_interval, aperture);
printf("MU string:%s\n", mu);
}
Проблема в следующем: если объявить переменную mu сразу после переменной var_name (как выше), то вывод программы следующий:
MU string:
MU string:
MU string:
MU string:
MU string:
MU string:
Если же объявление переменных сделать таким (mu последняя в списке):
int var_ioa;
int var_id;
char var_name[255];
bool sporadic;
float cyclic_interval;
char aperture[10];
var_meas_unit var_mu;
char mu[10];
то результат корректный:
MU string:A
MU string:A
MU string:A
MU string:na
MU string:na
MU string:na
Почему такое поведение? Не могу понять.
var_name? Но у вас есть другая неприятность -while (!feof(fp))– Harry Mar 14 '19 at 08:52