Проверьте наличие токена в strtok - PullRequest
0 голосов
/ 22 ноября 2018

Мне нужно изменить код C, который в настоящее время считывает два столбца данных из файла ascii, чтобы он мог проверить, предоставлен ли третий столбец и найден ли третий столбец, и будет читать третий столбец.

Соответствующий фрагмент кода в настоящее время:

    struct forestListElement * forestList = malloc(nTrees*sizeof(struct forestListElement));
    // skip first line                                                                                                                                                      
    fgets(line,800,file);
    cnt = 0;
    while( fgets(line,sizeof(line),file) !=NULL)  {
            pch = strtok(line," ");
            forestList[cnt].treeRootId =atoll(pch);
            pch = strtok(NULL," ");
            forestList[cnt].forestId = atoll(pch);
            cnt++;
    }

Этот фрагмент зацикливается на файле, который в настоящее время содержит два столбца данных (два идентификатора в длинном формате).Но я хотел бы изменить код так, чтобы после чтения первых двух столбцов он проверял, существует ли третий столбец, и, если он есть, считывает вес из этого столбца.Если третий столбец не существует, установите вес 1. Я хотел бы изменить код на что-то вроде:

    struct forestListElement * forestList = malloc(nTrees*sizeof(struct forestListElement));
    // skip first line                                                                                                                                                      
    fgets(line,800,file);
    cnt = 0;
    while( fgets(line,sizeof(line),file) !=NULL)  {
            pch = strtok(line," ");
            forestList[cnt].treeRootId =atoll(pch);
            pch = strtok(NULL," ");
            forestList[cnt].forestId = atoll(pch);
            forestList[cnt].forestWeight = 1.0;
            if(<check if third column exists>){   \\ <-- what do I put here? 
                  pch = strtok(NULL," ");
                  forestList[cnt].forestWeight = atof(pch);
            }
            cnt++;
    }

Что мне нужно включить в оператор if?

Извините, если это простая задача, но я не знаком с C и пытаюсь понять, что искать в Google!

Спасибо.

...