2012-03-25 2 views
0

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

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

, например

Входной сигнал: 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 

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

ответ

2

Во втором чтении вы читаете venseatfloat [test] [loop] [REGULAR] [OCCUPIED], но printf'ing venseatfloat [test] [loop] [DISCOUNT] [OCCUPIED]. (Примечание: REGULAR или DISCOUNT.)

+0

lol Chani

+0

Ughhhh wow. Я идиот. Извините, что украл у вас время. Теперь я должен разорвать голову на стене. –

+1

@ Doc, Если это действительно решение, тогда вам нужно принять ответ. –

Смежные вопросы