Error de carácter incorrecto, incluso cuando el carácter es correcto.
Tengo una tarea sobre operaciones de matrices y no puedo entender qué está mal en mi código, lo cual hace que mi programa diga que el carácter es incorrecto, aunque es correcto. ¿Podrías ayudarme, por favor?
Gracias.
if(scanf(" %c", &symbol) == 1) //input symbol with error handling
{
if (symbol != '*' || symbol != '+' || symbol != '-')
{
printf("[%c]\n", symbol);
fprintf(stderr, "Error: Chybny vstup [Symbol]!\n");
return 100;
}
}
davy.ai
Parece que el problema en tu código está en el operador lógico que se utiliza en la instrucción if. La condición
symbol != '*' || symbol != '+' || symbol != '-'
siempre se evaluará como verdadera, porque si una de las comparaciones es verdadera, entonces toda la declaración en su conjunto será verdadera.Para solucionar esto, debes utilizar el operador lógico “y” (
&&
) en lugar del operador lógico “o” (||
). La instrucción if corregida debería lucir así:De esta manera, te asegurarás de que el código solo entre en la instrucción if si
symbol
no es igual a ninguno de los caracteres especificados.