Командная строка против передачи аргументов команды через отладку - PullRequest
0 голосов
/ 24 апреля 2019

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

void byName(char *name) {

    read();
    element_t *e = top;
    while (strcmp(e->name, name) != 0) {//throws an exception
        e = e->next;
    }
    if (e == NULL) {
        printf("Error: element not found");
    }
    else {
        list(e);
    }

}

Я не понимаю, как она может проходить через визуальные студии и не генерировать исключение,в то же время не удается запустить через командную строку.Он должен либо генерировать исключение в обоих направлениях, либо не через исключение в любом случае, верно?

1 Ответ

1 голос
/ 24 апреля 2019

В этом цикле

while (strcmp(e->name, name) != 0) {//throws an exception
    e = e->next;
}

вы продолжаете навсегда, если name не соответствует ни одному элементу в списке. Таким образом, вы достигнете конца списка и будете использовать e, когда оно имеет значение NULL.

Измените цикл так, чтобы он останавливался, если e становится NULL. Как:

while (e != NULL && strcmp(e->name, name) != 0) {//throws an exception
    e = e->next;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...