[SOLUCIONADO] Duda memset

Iniciado por franxi2953, Junio 21, 2011, 12:19:08 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Junio 21, 2011, 12:19:08 PM Ultima modificación: Febrero 04, 2015, 10:19:55 PM por Expermicid
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??

la respuesta es claramente obvia ... haz ese printf y adios duda ;) .
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



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





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  :)

Junio 22, 2011, 02:58:01 PM #4 Ultima modificación: Febrero 08, 2014, 05:14:22 PM por Expermicid
Código: c

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