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.

Scanf no funciona con múltiples entradas en diferentes líneas.

Cuando ejecuto este programa, se compila, pero la segunda instrucción scanf solo imprime y no obtiene ninguna variable. Sin embargo, si elimino la primera instrucción scan, el programa funciona.

“`

#include <stdio.h>

struct file_struct
{
FILE *fp;
};

int main(int argc, char** argv)
{
char open_type;
printf(“Tipo de apertura [w/a]: “);
scanf(“%c”, &open_type);

struct file_struct new_file;
new_file.fp = fopen(argv[1], &open_type);

char text_buffer[128];
printf(“Ingrese el texto para agregar al archivo:\n\n”);
scanf(“%[^\n]s”, text_buffer);

fprintf(new_file.fp, “%s\n”, text_buffer);

return 0;

}</stdio.h>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el programa es que cuando se ejecuta la primera declaración scanf, lee la entrada de caracteres del usuario junto con el carácter de nueva línea (\n) que se agrega automáticamente al presionar la tecla de enter. Cuando se ejecuta la segunda declaración scanf, lee el carácter de nueva línea en lugar de la entrada esperada del usuario.

    Una manera de solucionar este problema es incluir un espacio antes del especificador de formato %c en la primera declaración scanf. Esto hará que se ignoren cualquier carácter de espacio en blanco (incluido el carácter de nueva línea) antes de leer el carácter de entrada.

    La declaración scanf actualizada se vería así:

    scanf(" %c", &open_type);

    Tenga en cuenta el espacio antes del %c.

    Al agregar este espacio, el programa debe leer correctamente la entrada del usuario para ambas declaraciones scanf.

Comments are closed.