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 ;) .
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 :)
int cant;
cant=strlen(cadena);
s = (char*)malloc(cant*sizeof(char));
memset( s, c, cant );