Простой C: atof дает неправильное значение - PullRequest
0 голосов
/ 25 марта 2012

У меня есть программа, которая читает входные данные из одной строки (очевидно, строки) и организует их в массивы.

У меня проблема в том, что однажды программа читает два разных значения и дважды возвращает первое. Сначала я думал, что программа дважды читает одно и то же значение, но когда я тестировал, оказалось, что он получил правильное значение, но вводит неправильное.

например

Ввод: 2 0,90 0,75 0,7 0,65

Извините, что перерезал это

(while(fgets (string[test], sizeof(string[test]),ifp))
pch = strtok_r(NULL, " ", &prog);
tem3 = atoi(pch);
while (loop<tem3)
{
    pch=strtok_r(NULL," ",&prog);
    venseatfloat[test][loop][DISCOUNT][OCCUPIED]=(float)atof(pch);
    printf("%f is discount\t",venseatfloat[test][loop][DISCOUNT][OCCUPIED]);

    pch=strtok_r(NULL, " ", &prog);
    strcpy(temp, pch);
    venseatfloat[test][loop][REGULAR][OCCUPIED]=(float)atof(pch);
    printf("%s is the string but %.3f is regular\n", temp ,venseatfloat[test][loop][DISCOUNT][OCCUPIED]);
    loop++;

}

выход:

>0.900000 is discount    0.75 is the string but 0.900 is regular

>0.700000 is discount    0.65 is the string but 0.700 is regular

Что происходит?

1 Ответ

2 голосов
/ 25 марта 2012

Во втором чтении вы читаете venseatfloat [test] [loop] [REGULAR] [OCCUPIED], но печатаете venseatfloat [test] [loop] [DISCOUNT] [OCCUPIED]. (Примечание РЕГУЛЯРНОЕ против СКИДКИ.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...