<h3 class="gD" style="color: rgb(200, 137, 0);"><span>Steven, pregunta por que lo ignoro...</span></h3>siempre se puede afirmar lo que explicas de que el indice 3 de letra es el primer byte de largo? esto es para toda arquitectura (big endian, litle endian, arm, y cualquier otra cosa que corra c)? <br>

me refiero a que las variables son alojadas en memoria en el mismo orden que son creadas y una a continuacion de la otra...<br><br>gracias<br>David<br><br><div class="gmail_quote">El 16 de julio de 2009 12:07, Steven Richard Davidson <span dir="ltr"><<a href="mailto:stevenrichard.davidson@gmail.com">stevenrichard.davidson@gmail.com</a>></span> escribió:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hola Carlos,<br>
<br>
2009/7/16 Carlos Wrangller Encarnacion Rodriguez <<a href="mailto:carlos.w04@gmail.com">carlos.w04@gmail.com</a>>:<br>
<div class="im">> Tengo el siguiente programa pasa saber si un caracter es vocal o consonante<br>
> pero siempre me dice que es consonante nose q tengo mal me imagino q cuando<br>
> hace la comparacion en el switch el caracter que llega no es la vocal pero<br>
> si le introdusco 2 (a) me dice q es consonante como quiera.<br>
><br>
<br>
</div>Veamos el código fuente.<br>
<div class="im"><br>
> #include <conio.h><br>
> #include <stdio.h><br>
> char letra[3];<br>
> int largo=0;<br>
<br>
</div>No te acostumbres a declarar variables globalmente. Mete estas<br>
declaraciones en 'main()'.<br>
<div class="im"><br>
> int main ()<br>
> {<br>
> printf ("\n DIGITE UNA LETRA:");<br>
> scanf ("%s",letra);<br>
> while(letra[3] != '\0');<br>
<br>
</div>Esto es un error. Recuerda que los índices de un array SIEMPRE<br>
empiezan por 0. Por lo tanto, tu array de 3 elementos los índices van<br>
de 0 á 2. El hecho de que tu programa no se quede retenido en este<br>
bucle es la suerte de que ese elemento contenga un cero (carácter<br>
nulo); pero esto puede cambiar en cualquier instante. La verdad es que<br>
la probabilidad no existe en tu programa, porque el elemento<br>
'letra[3]' realmente es el primer byte de la variable 'largo', que<br>
inicialmente es 0. Sin embargo, si cambias tu programa o incluso el<br>
orden de las declaraciones de tus variables, esta parte no funcionará.<br>
<br>
> switch(letra[3])<br>
<br>
Aquí tienes el mismo problema. Accedes a un elemento que no pertenece<br>
al array 'letra'.<br>
<br>
> {<br>
<div class="im">>    case 'a':<br>
>    case 'e':<br>
>    case 'i':<br>
>    case 'o':<br>
>    case 'u':<br>
> printf ("\n La letra %s es una vocal",letra);<br>
>       break;<br>
>    default:<br>
> printf ("\n La letra %s es una consonante",letra);<br>
> }<br>
> getch();<br>
<br>
</div>Debes retornar un número entero que por convenio es 0 (cero).<br>
<br>
> }<br>
<br>
Sugiero declarar 'letra' como un solo 'char' y no como un array. Esto es,<br>
<br>
char letra;<br>
...<br>
scanf( "%c", &letra );<br>
<br>
switch( letra )<br>
{<br>
...<br>
}<br>
<br>
<br>
Si quieres usar un array, entonces sólo te interesa el primer<br>
cáracter: 'letra[0]'.<br>
<br>
<br>
Espero haber aclarado las dudas.<br>
<font color="#888888"><br>
Steven<br>
</font><div><div></div><div class="h5"><br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br> (\__/) <br>(='.'=)This is Bunny. Copy and paste bunny into your <br>(")_(")signature to help him gain world domination. <br><br>