Memoria dinamica

kadesh1983
04 de Noviembre del 2004
en java si quieres leer una cadena que teclea el usuario se puede poner lo siguiente(inicializando teclado a la entrada estandar):
String cadena = teclado.leerCadena();

¿Como se puede hacer en C para reservar la memoria justa y no hacerlo con un array de caracteres?

Gracias

Alejandro_
04 de Noviembre del 2004
Si puedes usar C++:

std::string cadena;
std::cin >> cadena;

la "string" de la biblioteca estándar se encuentra en <string>, y "cin" (igual que "cout") está en <iostream>; ambos definen sus nombres en el espacio de nombres estándar (std).


Alejandro

chuidiang
04 de Noviembre del 2004
No puedes saber a priori cuantos caracteres ha escrito el usuario (salvo que te compliques un poco).

Reserva un array y utiliza fgets(), que asegura que lees no más de los caracteres del array. Si no has llegado al final, debes leer nuevamente redimensionando el array.

Se bueno.