我正在尝试制作一个程序,其中有单独的命令来输出不同的 ascii 艺术。当我尝试编译它时,gcc 说
warning: comparison between pointer and integer 10 | if (cmd == 'e'){ | ^~
这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main()
{
char cmd;
while(true){
scanf("\n%c", &cmd);
if (cmd == 'e'){
int e = system("./e");
}
else if (cmd == "train"){
int tr = system("sl");
}
}
return 0;
}
e 是我制作的一个单独的二进制文件,仅打印一些 ascii 艺术图,而 sl 是我安装在系统上的命令。
我尝试将 cmd 变量设置为指针,但这不起作用,所以我将其改回来。当它们被要求时,它应该打印 do 这些事情。
类型
char
可以容纳单个字母,因此您需要打开它:
#include <stdio.h>
#include <stdlib.h>
int main() {
char cmd;
for(;;) {
if(scanf("\n%c", &cmd) != 1) {
printf("scanf failed\n");
break;
}
if (cmd == 'e')
system("echo ./e");
else if (cmd == 't')
system("echo sl");
}
}
示例运行:
./e
t
sl
tx
sl
或者读取字符串:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char cmd[32];
for(;;) {
if(scanf("%31s", cmd) != 1) {
printf("scanf failed\n");
break;
}
if (cmd[0] == 'e')
system("echo ./e");
else if (!strcmp(cmd, "train"))
system("echo sl");
}
}
和示例运行(注意我如何将系统命令更改为 echo):
$ ./a.out
e
./e
train
sl
tx