используя strtok и заполняющий массив - PullRequest
0 голосов
/ 22 мая 2018

Я заполняю массив токенов из ввода из стандартного ввода.Я просматривал учебное пособие, и код успешно заполняет массив, однако я не могу использовать условие else для удаления токена, который не хочу помещать в массив.

char * token[MAX_ARGS];                    
char ** arg;                              
while(fgets(line, MAX_BUFFER, stdin)) {

    arg = token;
    *arg++ = strtok(line," \t\n"); 
    while ((*arg++ = strtok(NULL, " \t\n")));

Могу ли я получить некоторый указатель на то, как я могу разорвать этот цикл while в последней строке, чтобы я мог использовать if else.

1 Ответ

0 голосов
/ 22 мая 2018

Это проще сделать так:

char *tok = strtok(line, " \t\n");
while(tok) {
    *arg++ = tok;
    tok = strtok(NULL, " \t\n");
}

Теперь указатель NULL не помещен в массив.

Но вы не ведете подсчетсколько указателей в массиве, так почему вы не хотите, чтобы значение дозорного NULL?

...