使用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();}
使用 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();}