Vaciar cadenas en C

Urien

Seguramente sera mas sencillo de lo que parece pero soy incapaz de hacerlo, el caso es que uso una cadena que al final de un bucle tengo que "resetear" para volver a usarla e introducir otra palabra, ¿como puedo hacerlo?

No funciona con:

strcpy(aux,"\0");
aux="\0";

Y ya no se ke mas probar... lo unico ke hace eso es ke si tengo una cadena con "holaketal" me la deje con "\0olaketal".

LOc0

A efectos prácticos lo que está a la derecha del primer carácter '\0' (0 en ASCII) NO existe.

Para meter otra cadena en el mismo array usa strcpy(aux, "contenido nuevo"); (Ya te mete el '\0' al final de la cadena).

Otra cosa es que necesites borrar el contenido anterior del array de la memoria. Para eso puedes crearte una función que te lo haga con un bucle y te meta un '\0' en cada posición del array o usar: memset( cadena, 0, tam_max_cadena );

Salu2 ;)

Urien

#2 eso del bucle metiendo '\0' lo habia pensado antes pero me parecio demasiado... waltrapa xD, al final lo he solucionado vagamente poniendo el indice a 0 al final del bucle y luego añadiendo un '\0' abajo para cortar la cadena nueva, ahora mismo no puedo probar si funciona =/

elkaoD

aux[0] = 0; debería funcionar, ¿No? Cuando referencies a la cadena, encontrará el carácter 0 y parará.

JuAn4k4

*aux = '\0';
aux[0] = '\0';
memcpy(aux,'\0'); // No se si esto te funcionará , las dos primeras seguro.

'\0' es el caracter fin de cadena
"\0" es la cadena formada por la barra y el cero.

javithelong

aux[0]=0 sirve, como bien dice kaod

SeRiaL_k

ace poco tuve que hacer un trabajo de socket y lo d cadena[0]= '\0' ; no soluciona, al mandar la cadena salen chirimbolitos, yo use la funcion memset() que lo q ace es llenarte la cadena de x caracteres q kieras, en este caso use el caracter nulo \0 y se acabo cadena limpia.
ej:
memset(buffer,'\0',150);
o

memset(cadena,'\0',strlen(cadena));
esto ultimo es por si no sabes el tamaño a priori.
espero q t sirve. 1 saludo

Usuarios habituales

  • SeRiaL_k
  • javithelong
  • JuAn4k4
  • elkaoD
  • Urien
  • LOc0