Ayuda Por Favor: sobre asignación dinámica de memoria o algo así

Jose Salda?
04 de Mayo del 2004
Hola

En java tengo algo así:
(sé que no es así... pero interprétenlo por favor)
String cadena = new BufferedReader(new InputStreamReader(System.in)).readLine();

ahora... quiero hacer lo mismo en C o C++...
no sé... estoy de lo mas errado... pero esta es la idea...

char *cadena;
cadena = (char *) malloc(sizeof(strlen(gets(stdin))));

sé que no es valido pero quiero hacer algo así... para no gastar mas memoria de la que necesito...

Soy nuevo en esto... disculpen mi ignorancia

Le suplico q me ayuden por favor

noel solw
04 de Mayo del 2004
Suponiendo que trabajas en C++, la asignacion dinamica de memoria para una cadena de char es como se especifica:

char *a = new char[len+1];

len = numero de caracteres en la cadena.
+1 = lugar para el valor cero que indica en C el fin de la cadena.

luego de trabajar con "a" de la misma forma que trabajariamos con una cadena estatica, hay que borrarla de la memoria:

delete []a;

los dos parentesis antes de a, es para indicar al compilador que se trata de borrar un array y no un elemento solitario.

carlos
04 de Mayo del 2004
String cadena = new BufferedReader(new InputStreamReader(System.in)).readLine(); ???

Que yo sepa eso no tiene sentido alguno,, ?? esa linea compila ??? , ya que me parece que no ??
Me puedes decir en palabras no en codigo lo que deseas hacer.. ?

Acuerda la codificacion es lo ultimo que se hace en el proceso de programar..