Я никогда следующим разобрать CSV-файл, и это работает прекрасно, пока я изменилСинтаксический CSV с с
(getfield(tmp, 12));
в
(getfield(tmp, ver));
ли проблема в объявлении функции?
вот код:
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() {
double frame_index[40][300];
int horz;
FILE* fp = fopen("output.txt", "r");
char line[1024];
for (int ver; ver<20;ver++) {
while (fgets(line, 1024, fp)) {
char* tmp = strdup(line);
frame_index[ver][horz] = atof(getfield(tmp, ver));
// works if "ver" was explicitly defined
printf("AA %f\n", frame_index[ver][horz]);
free(tmp);
horz++;
}
rewind(fp);
}
}
Пожалуйста показать [Minimal, полный и проверяемых пример] (HTTP://stackoverflow.com/help/mcve). –
'getfield()' может возвращать 'NULL'. Необходимо проверить это, прежде чем вызывать 'atof()'. – chux