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; }