es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

promoviendo al usuario más de una cosa

Hola, soy bastante nuevo en la programación, pero quiero saber cómo puedo pedirle al usuario que escriba algo más de una vez.

Mi código:

#include<stdio.h>

int main()
{

// una palabra

char word[30];
printf("Por favor, escribe la palabra que desees: ");
scanf("%s", word);
printf("\n¡Ok, '%s' es una palabra!\n\n", word);



// un signo

char sign;
printf("Por favor, escribe el signo que desees: ");
scanf(" %c", &sign);
printf("\n¡Ok, quisiste imprimir el signo '%c'!\n\n", sign);

return 0;
}

Pero cuando lo ejecuto, puedo escribir una palabra, pero no puedo escribir ningún signo en la siguiente parte (el programa solo imprime):

Por favor, escribe el signo que desees 
¡Ok, quisiste imprimir el signo ' '!

Espero que alguien pueda ayudarme, gracias :)</stdio.h>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para pedir al usuario que escriba algo más de una vez, se puede utilizar un bucle. Un bucle común para usar sería el bucle while. Aquí tienes un ejemplo de código para pedir al usuario que ingrese un signo varias veces:

    #include <stdio.h>
    
    int main()
    {
        int i = 0;
        char signo;
    
        while (i < 3) {
            printf("Por favor, ingrese un signo: ");
            scanf("%c", &signo);
            printf("Ingresaste el signo: %c\n\n", signo);
            i++;
            // limpiar el búfer de entrada
            while ((getchar()) != '\n');
        }
    
        return 0;
    }
    

    En este ejemplo, el bucle se ejecutará tres veces y cada vez se le pedirá al usuario que ingrese un signo. El especificador de formato %c se utiliza para capturar una entrada de un solo carácter. Sin embargo, hay una advertencia: cuando el usuario presiona Enter después de escribir un carácter, también se registra un carácter de nueva línea (\n). Esto significa que la próxima vez que se llame a scanf, capturará ese carácter de nueva línea y no esperará una nueva entrada. Para evitar esto, podemos usar un bucle anidado para “limpiar” el búfer de entrada después de cada llamada a scanf. Esto evitará que se lean accidentalmente caracteres adicionales.</stdio.h>

Comments are closed.