Lihuen
RSSRSS AtomAtom

Función sencilla para leer de teclado

Esta es una función sencilla para leer de teclado, tanto strings como números enteros y reales. Tenga en cuenta que si lee números debería hacer la conversión con atoi() para enteros y con atof() para reales.

/*Por Fernando López*/
#include <stdio.h>
 
int readLine(char buffer[], int max_lenght)
/**
Recibe los argumentos:
  char buffer[]: arreglo de max_lenght + 1 posiciones donde se guardarán los caracteres
  int max_lenght: cantidad máxima de caracteres a leer
Retorna la cantidad de caracteres leidos y almacenados (Si se leen más de max_lenght caracteres los descarta sin contarlos)
*/
{
    //Recibe un buffer a leer, lee hasta max_lenght caracteres
    //Retorna la cantidad de caracteres leídos
    int i;
    int c;
 
    c = getc(stdin);
    //Leo mientras no me pase del máximo
    //Si llegué a fin de línea o EOF salgo del for
    for (i=0; i < max_lenght && c != EOF && c != '\n'; i++){
        buffer[i] = c;
        c = getc(stdin);
    }
    //Trunco el final de la cadena
    buffer[i] = 0;
 
    //Si llené el buffer leo los caracteres faltantes de la línea y los descarto
    if (i == max_lenght){
        while (c != EOF && c != '\n')
            c = getc(stdin);
    }
    return i;
}
 
int main(){
    char cadena[3];
    printf("Se leyeron %d caracteres, cadena: %s\n", readLine(cadena, 2), cadena);
    return 0;
}