Я запускаю программу, которая открывает CSV-файл, который содержит 3 разных значения (float) в каждой строке. Я хочу разделить разные значения в разных переменных. Для этого я уже использовал функцию strtod(), но работает только на Visual Studio, а не на DAVE IDE (на основе Eclipse). Я также проверил следующий код, но не добился успеха вообще (он распознает много мусора и ничего подобного, чего я хочу).Синхронизация строки с плавающей точкой в C
f_read(&fil, &buff2[0], 25, &br);
f_close(&fil);
for (int y=0; y<25; y++){
if ((buff2[y] == '\n') || (buff2[y] == '\r')){
break;
}
else count++;
}
for (int y=0; y<count; y++){
cut[y] = buff2[y];
}
for (int y=count; y<25; y++){
cut[y] = NULL;
}
//token = strtok(cut, ";");
/* walk through other tokens */
/*while(token != NULL)
{
array[j] = atof(token);
token = strtok(NULL, ";");
j++;
}*/
for (int j = 0, ptr = cut; j < 3; ++j, ++ptr)
{
//array[j] = (float)strtof(ptr, &ptr);
array[j] = (double)strtod(ptr, &ptr);
}
Прокомментированные части кода - это другие испытания, которые я сделал, но ни одна из них не работает. И причина, почему я использовал f_read(), потому что я только могу использовать эту библиотеку: http://elm-chan.org/fsw/ff/00index_e.html
Пример «вырезать» строка ниже:
cut[0] char 52 '4'
cut[1] char 46 '.'
cut[2] char 50 '2'
cut[3] char 49 '1'
cut[4] char 54 '6'
cut[5] char 59 ';'
cut[6] char 48 '0'
cut[7] char 59 ';'
cut[8] char 49 '1'
cut[9] char 48 '0'
cut[10] char 48 '0'
cut[11] char 0 '\0'
cut[12] char 0 '\0'
cut[13] char 0 '\0'
cut[14] char 0 '\0'
cut[15] char 0 '\0'
cut[16] char 0 '\0'
cut[17] char 0 '\0'
cut[18] char 0 '\0'
cut[19] char 0 '\0'
cut[20] char 0 '\0'
cut[21] char 0 '\0'
cut[22] char 0 '\0'
cut[23] char 0 '\0'
cut[24] char 0 '\0'
После 11-го элемента, нет ничего, но это не так, поскольку это всего лишь пример, а некоторые из строк в CSV-файле имеют больше цифр (но они имеют одинаковые 3 переменные).
Заранее спасибо.
EDIT: проблема решена! Кажется, что DAVE IDE не любит включать заголовок с включенными. Мне пришлось писать #include в начале main.c.
huh? Пожалуйста, покажите полный, действительный пример. – OldProgrammer
Это не похоже на файл .csv ... Опубликуйте содержимое файла, кажется, что вы его плохо прочитали или плохо прочитали прочитанную часть. Ваша C-строка заканчивается в позиции 14 (символ NUL). Опубликуйте полный функциональный код, который можно протестировать. –
Опубликовать объявление 'cut []' и как оно было заполнено. – chux