[C con Clase] pregunta fin de string

Steven Davidson steven en conclase.net
Jue Jun 28 23:48:34 CEST 2007


Hola Germán,

El pasado 2007-06-28 21:37:04, german escribió:

g> holas a todos , mi consulta es la siguiente , como puedo poner al final de
g> un arreglo el simbolo fin de string ,  yo hage esto
g> arr_noterm[tam_noterm]='/0'   para definr el fin de string   pero el dev me
g> da el siguinete warnig  [Warning] multi-character character constant   ,
g> ¿cual seria la forma correcta? de tal manera que no arroje ningun warning.

El aviso tiene que ver con que has dado dos caracteres para un solo carácter. Dicho de otra manera, usas un carácter de 2 bytes.

La solución es usar la barra inversa \ que sirve a modo de "escape de secuencia". Esto es,

arr_noterm[tam_noterm] = '\0';

También podrías indicar el valor entero 0 (cero), que sería,

arr_noterm[tam_noterm] = 0;


Sin embargo, ten cuidado dónde colocas el carácter nulo. Lo que quieres es que esté al final de la información y no necesariamente al final del array. Por ejemplo,

char szTexto[1024];

szTexto[0] = 'H';
szTexto[1] = 'o';
szTexto[2] = 'l';
szTexto[3] = 'a';
szTexto[1023] = 0;  // Carácter nulo al final del array

cout << szTexto << endl;

Seguramente aparecerá por pantalla:
Hola.as-r9@#!%~}w[q[f';&#~` 5         1HJs'f-<XZgYU46@#g78*_:.'

Y así hasta llenar 1023 caracteres.

Lo que tendríamos que haber hecho es agregara el carácter nulo al final de la información; o sea, la cadena en sí. Esto sería,

szTexto[0] = 'H';
szTexto[1] = 'o';
szTexto[2] = 'l';
szTexto[3] = 'a';
szTexto[4] = 0;  // Carácter nulo al final de la cadena


Espero haber aclarado la duda.

Steven


Más información sobre la lista de distribución Cconclase