Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: franxi2953 en Junio 21, 2011, 12:19:08 PM

Título: [SOLUCIONADO] Duda memset
Publicado por: franxi2953 en Junio 21, 2011, 12:19:08 PM
bueno los que suelen meterse a irc estaran ya artos de mis dudas de c   :)

la cosa es que esta vez no habia nadie que supiera de c conectado y ANTRAX me recomendo preguntar aqui asi que:

si yo tengo una cadena char *cadena, a la que he reservado memoria con malloc y le hago un memset(cadena, 0, strlen(cadena)), se llena toda la cadena de 0 no?,  si yo luego lleno la mitad de la cadena, la otra mitad sigue con 0 como quedaria? asi ([h][una o][l][a][m][una u][n][d][una o][\0][0][0])? si le hago un printf por ejemplo, aparecen estos 0 o solo hasta \0?? y si le hago un fwrite??
Título: Re:duda memset =)
Publicado por: S[e]C en Junio 22, 2011, 12:57:53 AM
la respuesta es claramente obvia ... haz ese printf y adios duda ;) .
Título: Re:duda memset =)
Publicado por: casca2011 en Junio 22, 2011, 03:15:12 AM
Citarsi yo tengo una cadena char *cadena, a la que he reservado memoria con malloc y le hago un memset(cadena, 0, strlen(cadena)), se llena toda la cadena de 0 no?

en caso de que el tamaño de la memoria reservada (malloc no inicializa a nada) sea igual al largo de la cadena si...

Citarsi yo luego lleno la mitad de la cadena, la otra mitad sigue con 0 como quedaria? asi ([h][una o][l][a][m][una u][n][d][una o][\0][0][0])? si le hago un printf por ejemplo, aparecen estos 0 o solo hasta \0?? y si le hago un fwrite??

printf %c imprimiria una "h"
printf %s imprimiria "hola mundo" (el \0 ni se imprimen, ya que las cadenas ascii terminan en \0)
etc

Saludos fiel user




Título: Re:duda memset =)
Publicado por: franxi2953 en Junio 22, 2011, 06:01:21 AM
Citaren caso de que el tamaño de la memoria reservada (malloc no inicializa a nada) sea igual al largo de la cadena si...

amm entiendo; es decir que para llenar toda la cadena de 0 tendria que poner como 2º parametro el tamaño reservado por malloc no strlen(cadena) porque si no solo me mira caracteres hasta \0 no?


Citarla respuesta es claramente obvia ... haz ese printf y adios duda ;) .
;D la cosa es si se me llena la cadena entera de 0 poniendo strlen mas que lo del printf, eso se me ocurrio preguntarlo ya de paso  :)
Título: Re:duda memset =)
Publicado por: Alejandro_N12 en Junio 22, 2011, 02:58:01 PM

int cant;
cant=strlen(cadena);
s = (char*)malloc(cant*sizeof(char));
memset( s, c, cant );