¿Cómo terminar mi programa si scanf falla (en C)?
<h1>include <stdio.h></h1>
<p>int Set1PColour(char *P1Colour)
{
char colour;
do
{
printf("Elige un color inicial (A)marillo o (R)ojo: ");
if (scanf(" %c", &colour) != 1)
{
return 1;
}
*P1Colour = colour;
} while ((colour != 'R') && (colour != 'A'));
return 0;
}</p>
<p>int main()
{
char P1Colour;
if (Set1PColour(&P1Colour) == 1)
{
return 0;
}
printf("\nNo se devolvió cero.");</p>
<pre><code>return 1;
</code></pre>
<p>}
Mi objetivo para mi programa es terminarlo si falla scanf en una función.
¿Cómo puedo asegurarme de que el programa termine sin imprimir “No se devolvió cero”?
Básicamente, esperaba que el programa terminara en esta línea una vez que ingresara un valor como 4.5, pero simplemente continúa.
c
if (Set1PColour(&P1Colour) == 1)
{
return 0;
}
¡Cualquier ayuda es apreciada!
davy.ai
Para asegurarte de que el programa termine sin imprimir “Zero was not returned”, debes modificar el valor de retorno de la función
main
basado en el valor de retorno de la funciónSet1PColour
.Si
Set1PColour
devuelve 1, significa que scanf falló y debes terminar el programa inmediatamente. En este caso, simplemente debes devolver 1 desde la funciónmain
, lo cual señalará un error al sistema que lo llamó sin imprimir nada.Aquí está el código actualizado:
En el código actualizado, si
Set1PColour
devuelve 1, la funciónmain
devuelve inmediatamente 1 sin imprimir nada. De lo contrario, imprime “Zero was not returned” y devuelve 0 para señalar una terminación exitosa.</stdio.h>