Функция не работает после использования strtok - PullRequest
1 голос
/ 27 марта 2020

У меня возникли проблемы в программе после использования strtok(). Я проверил printf и opt всегда получает то, что должен. Но когда я достигаю условия if, ничего не происходит. Например, когда я набираю a banana, он должен запустить функцию a1, но программа просто заканчивается.

#include <stdio.h>
#include <string.h>

char pedido[80],*opt

int main(){
    fgets(request,80,stdin);
    opt=strtok(request," ");
    if (opt=="a"){a1();}
    if (opt=="q"){a2();}
    if (opt=="N"){a3();}
    if (opt=="A"){a4();}
    if (opt=="r"){a5();}
    if (opt=="R"){a6();}
    if (opt=="C"){a7();}
    if (opt=="p"){a8();}
    if (opt=="E"){a9();}
    if (opt=="m"){a10();}
    if (opt=="l"){a11();}
    if (opt=="L"){a12();}
    return 0;
}

1 Ответ

2 голосов
/ 27 марта 2020

Подобные выражения

if (opt=="a"){a1();}

не имеют смысла, поскольку opt никогда не может быть равен "a". Значение opt равно NULL или адресу символа в запросе массива. Поскольку строковый литерал и массив занимают разные степени памяти, их адреса не равны.

Вы должны использовать стандартную функцию C strcmp, например

if ( strcmp( opt, "a" ) == 0 ){a1();}
...