我正在运行一个程序,打开一个.csv文件,每行包含3个不同的(浮点)值。我想在不同的变量中分离不同的值。 为此,我已经使用了strtod()函数,但它只适用于Visual Studio而不适用于DAVE IDE(基于Eclipse)。 我还测试了下面的代码,但没有成功(它识别了很多垃圾,并没有类似于我想要的东西)。
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”字符串的示例如下:
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个变量)。
提前致谢。
编辑:问题解决了!似乎DAVE IDE不喜欢包含带包含的headder。我不得不在main.c的开头写#include。