使用strtok后函数不是运行

Function not running after using strtok

使用 strtok() 后,我的程序出现了一些问题。我已经测试了 printf 并且 opt 总是得到它应该得到的。但是当我到达 if 子句时,什么都没有 运行s。例如,当我键入 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;
}

这样的说法

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

没有意义,因为 opt 永远不会等于 "a"。 opt 的值为 NULL 或数组请求中字符的地址。由于字符串文字和数组占用不同的内存范围,因此它们的地址不相等。

你应该使用标准的 C 函数 strcmp 作为例子

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