如何使用带有字符的 if 语句

问题描述 投票:0回答:1

我正在尝试制作一个程序,其中有单独的命令来输出不同的 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 这些事情。

c linux gcc
1个回答
0
投票

类型

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
© www.soinside.com 2019 - 2024. All rights reserved.