¿Cómo comparar un char?

2 minutos de lectura

avatar de usuario de lolxdfly
lolxdfly

estoy aprendiendo c. Tengo una pregunta. ¿Por qué no funciona mi programa?

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

char cmd;

void exec()
{
        if (cmd == "e")
        {
                printf("%c", cmd);
                // exit(0);
        }
        else
        {
                printf("Illegal Arg");
        }
}

void input()
{
        scanf("%c", &cmd);
        exec();
}

int main()
{
        input();
        return 0;
}

Inserto una “e” pero dice argumento ilegal.
cmd no es igual a “e”. ¿Por qué? Configuré cmd con scanf en “e”.

  • utilizar cmd == 'e' en su lugar, y lea sobre C antes de hacer estas preguntas. Por lo general, está mal visto si haces una pregunta que podría responderse en un libro para principiantes.

    – tay10r

    20 de julio de 2013 a las 21:16


  • @ user2603035 – Lamento que te traten tan mal 🙁 Como dijo Taylor Flores, un “char” no es una “cadena”; debes sustituirlo if (cmd == 'e')

    – paulsm4

    20 de julio de 2013 a las 21:17


  • @paulsm4 No, necesita if (cmd == 'e').

    usuario529758

    20 de julio de 2013 a las 21:19

  • +1 al OP para una pregunta bien especificada. La razón por la que existe stackoverflow es porque a veces no podemos ver el problema que se encuentra frente a nuestros propios ojos, a pesar de que el libro tiene toda la información. No dude en hacer más preguntas. ¡Nos aseguraremos de que aprendas a programar más rápido de lo que lo harías si te quedaras solo con un libro! 🙂

    – nigromante

    20 de julio de 2013 a las 21:32

  • Es una pena que OP gane tanta reputación con esta pobre pregunta como con una respuesta moderadamente buena. Es una pena.

    usuario529758

    20 de julio de 2013 a las 21:40

Avatar de usuario de Casper Beyer
Casper Beyer

En primer lugar, en C, las comillas simples son literales char y las comillas dobles son literales de cadena. Por lo tanto, ‘C’ y “C” no son lo mismo.

Para hacer comparaciones de cadenas, use strcmp.

const char* str = "abc";
if (strcmp ("abc", str) == 0) {
   printf("strings match\n");
}

Para hacer comparaciones de caracteres, use el operador de igualdad.

char c="a";
if ('a' == c) {
   printf("characters match\n");
}

  • En tu segundo ejemplo, declaras y defines c como 'a' pero usa el nombre de la variable a para comparar con 'a'. Ese nombre de variable debería, por supuesto, ser c. 🙂

    –Joey van Hummel

    20 de julio de 2013 a las 22:22

Avatar de usuario de CharlesX
CarlosX

cmd es un tipo char pero "e" es una cadena, no un tipo char, deberías escribir así if(cmd == 'e')

¿Ha sido útil esta solución?