Я прочитал из CSV-файла с 4 столбцами (целыми числами). Функция чтения работает, но когда я пытаюсь вставить полукокс значения в массив (целые числа) возвращает эту ошибкуconvert const char * to int
значение типа «Const символ *» не может быть назначен объектом типа «поплавка»
Я стараюсь использовать atoi
, но возвратный список 0000, 1111 и т. Д. Можете ли вы предложить мне какое-то решение? код:
const char* getfield(char* line, int num)
{
const char* tok;
for (tok = strtok(line, ",");
tok && *tok;
tok = strtok(NULL, ";\n"))
{
if (!--num)
return (tok);
}
return NULL;
}
int main(void)
{
FILE *pf=fopen("Trajectory_1.csv","r");
char line[1024];
if(pf==NULL){
printf("ERROR MESSAGE");
exit(1);
}
int x=0;
while(fgets(line,sizeof(line),pf)){
char* tmp=strdup(line);
printf("%s",getfield(tmp,1));
t_h[x]=getfield(tmp,1);
free(tmp);
x++;
}
fclose(pf);
}
в этом случае только первый столбец
РЕДАКТИРОВАТЬ код будет
double getfield(char* line, int num)
{
const char* tok;
for (tok = strtok(line, ","); //comam separator
tok && *tok;
tok = strtok(NULL, ";\n"))
{
if (!--num)
return (atof(tok));
}
return NULL;
}
FILE *pf=fopen("//home//user//Documenti//Bello//Dataset1//Trajectories//Trajectory_1.csv","r"); //rivedere
char line[1024];
if(pf==NULL){
printf("ERR MSG"); // I change this like William suggest
exit(1);
}
int x=0;
while(fgets(line,sizeof(line),pf)){
double d=getfield(line,1)); // I did not understand
}
fclose(pf);
'printf (" ERROR MESSAGE ");' всегда неправильно. Ошибки принадлежат stderr. Попробуйте 'pf = open (путь," r "); if (pf == NULL) {perror (путь); ... ' –
@WilliamPursell« Сообщение об ошибке »только для этого вопроса, у меня есть соответствующее сообщение –
Конечно, но вы печатаете его в неправильном потоке. –