Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

150
Vistas
C switch case using char[2]

I'm trying to use switch case with char[2] in C, but it only supports integers.

int main() {
        char c[2] = "h";
        switch (c) {
                case "h":
                        printf("done!");
        }
        return 1;
}

For better understanding, what I'm trying to do is:

if "h" in ")($+#&@+)#"

Basically I want to make a condition that matches a character with a group of characters, but efficiently, the first thing that came to mind is to use switch case but it only supports int. But when I use (int)c which is recommended in other stackoverflow answers, it doesn't return the ascii value.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Using the switch statement in this case does not make a sense.

Just use the standard function strchr declared in <string.h>.

#include <string.h>

//...

if ( strchr( c, 'h' ) != NULL ) puts( "done!" );
over 4 years ago · Santiago Trujillo Denunciar

0

You can't compare arrays of characters (strings) using a switch statement directly, because switch statements only work with fundamental types; not arrays of fundamental types.

The reason using (int)c isn't returning the ASCII value is because you're casting char[]->int instead of char->int.

The difference between single and double quotes is an important one in C:

  • 'h' is of type char, and is equal to 104 (Lowercase 'h' in ASCII)
  • "h" is of type const char*, and points to 2 characters: h, & the null terminating character \0

To check if a character is present in a string, you can use the strchr function as mentioned in Vlad from Moscow's answer, or if you want to do it yourself using switch statements you could try this:

int main()
{
    char c[2] = "h";
    bool found = false;
    for (int i = 0; i < 2; ++i) {
        switch (c[i]) {
        case 'h': // compare c[i] == 'h'
            found = true;
            break;
        default:
            break;
        }
    }
    if (found)
        printf("Done!");
    return 0;
}
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda