[C con Clase] duda fin de cadenas

Davidson, Steven srd4121 en njit.edu
Jue Mayo 15 19:43:33 CEST 2014


Hola Miguel Ángel,

2014-05-15 12:43 GMT-04:00 Miguel Ángel Ordóñez <maormo en gmail.com>:

> Muy buenas.
>
> Ahora si he comenzado con fuerza el curso, y quería haceros un par de
> preguntillas que me surgen con el fin de una cadena.
> El fin de una cadena ha de ir con el carácter nulo, que se corresponde con
> \0, ¿no? sin embargo en el ejemplo 9.3, veo que se añade en alfabeto[26] un
> cero. ¿Tiene el mismo valor el carácter ascii \0 que el cero?
>
>
Correcto.

¿El fin de cadena ha de ir siempre en la última posición? Es que choca que
> si en una cadena quiero informa un carácter cero de verdad, se confunda
> este con un fin de cadena.
>
>
Ten cuidado con lo de "última posición". Es cierto que tiene que aparecer
justo después del último carácter en la cadena. Esto no implica que deba
estar en la última posición del array.

Usamos un array de 'char' para representar una cadena de caracteres. Por
ejemplo,

char szMensaje[100] = "hola";

'szMensaje' es un array de 100 elementos de tipo 'char'. Guardamos la
cadena "hola" al comienzo del array, 'szMensaje'. La cadena consiste de 4
caracteres junto con el carácter nulo al final (de la cadena), que existe
justo después del carácter, 'a'. Es decir,

szMensaje[0]  <--  'h'
szMensaje[1]  <--  'o'
szMensaje[2]  <--  'l'
szMensaje[3]  <--  'a'
szMensaje[4]  <--  '\0'

Esto no tiene nada que ver con el resto de los elementos del array,
'szMensaje', que ocupa las posiciones de 5 á 99, que contendrán basura en
estos momentos: cualesquier datos desconocidos, y seguramente indeseados.


El segundo comentario que haces no es correcto porque tú mismo dijiste que
el carácter '\0' es igual que el valor de 0, el cual representa el carácter
nulo. Por lo tanto, el carácter '0' se representa de otra manera, que
realmente es el código ASCII, 48.

Hablamos acerca de los caracteres de escape en el capítulo 7:
http://c.conclase.net/curso/index.php?cap=007b#Not_char  Para ver la tabla
de correspondencias entre caracteres y códigos numéricos, consulta el
apéndice A del curso de C++; puedes ir directamente a:
http://c.conclase.net/curso/index.php?cap=900#ASCII_tabla

En fin...dudas de novato. Tened paciencia.
>

No te preocupes; para eso estamos :)


Espero que esto vaya aclarando las dudas del momento.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140515/1860ca02/attachment.html>


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