Resumen: Entrega nº28 del tutorial "Curso básico de programación en lenguaje C desde cero".
Codificación aprenderaprogramar.com: CU00528F

 

 

PUTS Y GETS. DIFERENCIA CON PRINTF Y SCANF

Las funciones printf y scanf proporcionan un marco general para mostrar y pedir datos de distintos tipos. En el caso de datos de tipo cadenas de caracteres (coloquialmente Strings) C dispone de instrucciones específicas que simplifican la codificación: puts() y gets(). La función puts recibe un único argumento: la cadena de caracteres a mostrar por pantalla.

logo lenguaje programacion C

 

Escribe este código y comprueba la equivalencia con printf que proporciona puts para cadenas de caracteres:

#include <stdio.h>
#include <stdlib.h>
// Ejemplo aprenderaprogramar.com
int main() {
    char url [] = "http://www.aprenderaprogramar.com";
    printf ("%s\n", url) ;
    puts (url);
    return 0;
}

 

La función gets() recibe como único argumento la variable en la que debe almacenarse una entrada de usuario que va a ser considerada como una cadena de caracteres. Ejecuta este programa.

#include <stdio.h>
#include <stdlib.h>
// Ejemplo aprenderaprogramar.com
int main() {
    char frase [100];
    printf ("Escriba una frase") ;
    gets (frase);
    puts ("Frase introducida:");
    puts (frase);
    return 0;
}

 

gets se diferencia de scanf en que scanf sólo captura una cadena de texto hasta que aparece el primer espacio o fin de línea (desechando todo lo que venga a continuación). De este modo si tratamos de capturar con scanf el texto “Amanece un maravilloso día aquí en Alaska” lo único que capturaremos es “Amanece”, perdiéndose el resto del texto. En cambio con gets se captura todo el texto. Tanto con scanf como con gets se introduce automáticamente un fin de cadena (\0) al final del texto capturado (de ahí que un array de caracteres siempre tenga un carácter adicional además del texto visible, el correspondiente al final de cadena.)

Modifica el programa anterior usando scanf ("%s",frase); en lugar de gets (frase) y comprueba las diferencias cuando introduces frases con espacios intermedios.

Muchas veces no se usan puts y gets porque las funciones printf y scanf son más generales, pero para el tratamiento de cadenas de texto en general resultan ventajosas las instrucciones específicas por la comodidad que aportan.

 

 

EJERCICIO

Crea un programa que usando puts y gets (sin usar printf ni scanf) pida al usuario su nombre y ciudad de nacimiento. Tras esto se deberá mostrar el siguiente mensaje: “Bienvenido nombre, encantado de hablar con alguien de ciudad”. Donde nombre y ciudad deben ser reemplazados por los datos proporcionados por el usuario. Por ejemplo si el usuario introduce como nombre Juan y como ciudad Lima, deberá mostrarse “Bienvenido Juan, encatando de hablar con alguien de Lima”.

 

Para comprobar si tus respuestas son correctas puedes consultar en los foros aprenderaprogramar.com.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

 

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

 

Descargar archivo: