Pregunta sobre Palib

Alguien sabe como resolverme este problema:
u32 n = 1;
char hola[100];
while (n < 101)
{
hola[n] = n;
n++;
}
PA_OutputText (0, 1, 1,"Hola %s", hola[77]);



Se supone que me tendría que aparecer "hola 77" en la pantalla y no me aparece.
(He puesto los InitText y todo, solo me aparece hola)
jjdt escribió:Alguien sabe como resolverme este problema:
u32 n = 1;
char hola[100];
while (n < 101)
{
hola[n] = n;
n++;
}
PA_OutputText (0, 1, 1,"Hola %s", hola[77]);



Se supone que me tendría que aparecer "hola 77" en la pantalla y no me aparece.
(He puesto los InitText y todo, solo me aparece hola)


PRIMERO: Deja de abrir hilos o te reportare.. que ya cansas.
SEGUNDO: Vamos a ver ... errores errores errores..

hola[n] = n; En esta asignacion le pasas un entero.. con lo que le estas pasando el valor en ascii del carácter. Esto te lo explico por si creias que la posicion i iba a tener el numero i.

En el bucle while entras con n = 1 y sales con n = 100. Pero si supieras un poco de C sabrias que los indices de los vectores van desde 0 hasta n - 1, es decir.. desde 0 hasta 99.

por ultimo:
PA_OutputText (0, 1, 1,"Hola %s", hola[77]);
esta mal..
deberia de ser
PA_OutputText (0, 1, 1,"Hola %c", hola[77]);
ya que hola[77] es un caracter.


Si tienes alguna duda mas.. no abras otro hilo por favor
Tambien deberías pensar, que si vas a usar "hola[]" para enteros, declararlo como vector de int, no de chars. Luego, en el print sería %i en vez de %c
Eleazar escribió:Tambien deberías pensar, que si vas a usar "hola[]" para enteros, declararlo como vector de int, no de chars. Luego, en el print sería %d en vez de %c


Fixed!
Vamos a ver, aunque me estes humillando siempre Suikoden77, me da igual mientras me soluciones los problemas XD.
Entoces ¿Como sería el codigo? Escribidmelo.
¿Sería así?
u32 n = 1;
char hola[99];//Gracias por tu recomendación Eleazar pero más tarde usaré carácteres.
while (n < 100)
{
hola[n] = n;//¿¿¿¿¿COMO SERÍA ESTO??????¿¿¿¿COMO HAGO QUE "N" LO TOME COMO VARIABLE???
n++;
}
PA_OutputText (0, 1, 1,"Hola %s", hola[77]);


No estoy seguro del todo pero las variables tipo char,Suikoden77,se ponen como s.
Corrigeme si es mentira, lo vi aquí:
http://palib.info/wiki/doku.php?id=day3es#visualizando_cadenas_de_caracteres
jjdt escribió:Vamos a ver, aunque me estes humillando siempre Suikoden77, me da igual mientras me soluciones los problemas XD.
Entoces ¿Como sería el codigo? Escribidmelo.


No te estoy humillando.. simplemente eres otro pesado que no tiene ni puñetera idea de programacion y encima viene exigiendo que te resolvamos dudas que tienen que ver con el aprendizaje del lenguaje.

No estoy seguro del todo pero las variables tipo char,Suikoden77,se ponen como s.
Corrigeme si es mentira, lo vi aquí:
http://palib.info/wiki/doku.php?id=day3 ... caracteres


Ademas.. eres del tipo de gente burra que no hace caso de lo que le dicen. Si te dije que los caracteres se ponen con %c y no con %s no es por que me salga a mi decirlo.. si no porque es asi.. si te hubieras mirado antes los conceptos de C sabrias la diferencia entre cadena de caracteres (array de caracteres) o caracter simple.

Ahora tu codigo: Vuelves a cometer los mismos errores.. ya decia yo que hay gente burra que no aprende.

while (n < 100){ hola[n] = n; n++; }
Para empezar este bucle no es un mientras sino un para, y para seguir si hola es un array de 99 caracteres.. para acceder a ellos tienes que entran en las posiciones 0, 1, 2, ..., 98, mientras que tu entras en las posiciones 1, 2, ..., 100, lo que es absurdo ya que intentas acceder a mas posiciones de las que hay, ademas de sobrepasar el vector lo que da lugar a error.

hola[n] = n;
Si lo que quieres es que en la posicion 10 guardar los caracteres 1 y 0, en la 22 los caracteres 2 y , no lo vas a conseguir nunca. Cada posicion del vector hola guarda la informacion de un unico.. UNICO caracter. Explicacion para tontos.. el diez necesita dos caracteres.. el cien tres.. y asi consecutivamente. Ademas si lo que quieres es dar un caracter en concreto se pone el caracter entre comillas o acentos, esto es: ' '.


PA_OutputText (0, 1, 1,"Hola %s", hola[77]);
lo mismo de antes

Ahora te voy a dar la clave, y es que hola no debe de ser un vector de caracteres si no uno de enteros. Esto ya te lo ha dicho alguien antes.. pero para que hacer caso al resto de la gente cuando no tienes ni idea y tienes la mente mas cerrada que el culo de un muñeco.

Te pires..
Ok grax pero no hay alguna forma de hacer lo que yo intente, ¿me podrías escribir el codigo?.
Otra cosa, lo hice con variable char porque necesitaré mas tarde guardar carácteres, no me la cambien por otro tipo de variables.
Vale no me humillas pero soy un paleto de la programación, con que me ayudes me conformo, y si no que le vamos a hacer.
jjdt escribió:Ok grax pero no hay alguna forma de hacer lo que yo intente, ¿me podrías escribir el codigo?.

Anda que no tienes morro tu ni na xDDD

jjdt escribió:Vale no me humillas pero soy un paleto de la programación, con que me ayudes me conformo, y si no que le vamos a hacer.

Es normal que se mosqueen cuando no haces más que postear fallos estúpidos que no cometerías si te leyeses cualquier manual de programación en C, y cuando a causa de ello estás llenando el foro con preguntas y peticiones.
7 respuestas