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”.
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 variablea
para comparar con'a'
. Ese nombre de variable debería, por supuesto, serc
. 🙂–Joey van Hummel
20 de julio de 2013 a las 22:22
CarlosX
cmd
es un tipo char pero "e"
es una cadena, no un tipo char, deberías escribir así if(cmd == 'e')
utilizar
cmd == 'e'
en su lugar, y lea sobreC
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