Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Que esta mal en mi funcion?? ayuda

Estas en el tema de Que esta mal en mi funcion?? ayuda en el foro de C/C++ en Foros del Web. Pues estoy haciendo un programa en c tengo declarado una lista de nombres de animales @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código main: Ver original char *anim[]={"Perro","Gato","Jirafa","Elefante","Leon"}; printf("%d\n",cuentaPalabras(anim)); cuando ...
  #1 (permalink)  
Antiguo 28/03/2009, 13:32
 
Fecha de Ingreso: enero-2009
Ubicación: Sentado enfrente la PC
Mensajes: 24
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Que esta mal en mi funcion?? ayuda

Pues estoy haciendo un programa en c

tengo declarado

una lista de nombres de animales
Código main:
Ver original
  1. char *anim[]={"Perro","Gato","Jirafa","Elefante","Leon"};
  2. printf("%d\n",cuentaPalabras(anim));

cuando le aplico esta funcion de cuentaPalabras no me da el numero de palabras que quiero q me muestre si no me da otra cantidad mas grande

esta es mi funcion:
Código cuentaPalabras:
Ver original
  1. int cuentaPalabras(char *list[]){
  2.  int num=0;
  3.  while(list[num]!=NULL){
  4.   num++;
  5. }
  6.  return num;
  7. }

podrian decirme que esta pasando o como debe ser mi funcion???
  #2 (permalink)  
Antiguo 28/03/2009, 14:37
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Que esta mal en mi funcion?? ayuda

char *anim[]={"Perro","Gato","Jirafa","Elefante","Leon"};

¿Donde esta el puntero nulo que esperas encontrar en el bucle?

char *anim[]={"Perro","Gato","Jirafa","Elefante","Leon", 0};
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 28/03/2009, 18:04
 
Fecha de Ingreso: enero-2009
Ubicación: Sentado enfrente la PC
Mensajes: 24
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Que esta mal en mi funcion?? ayuda

Cita:
Iniciado por Eternal Idol Ver Mensaje
char *anim[]={"Perro","Gato","Jirafa","Elefante","Leon"};

¿Donde esta el puntero nulo que esperas encontrar en el bucle?

char *anim[]={"Perro","Gato","Jirafa","Elefante","Leon", 0};
Tengo que ponerlo??

Pense que ya no se usaba....
asi como cuando en una cadena auotomaticamente se pono cuando la declaras y le asignas una frase....

Grax voy a checar y te cuento
  #4 (permalink)  
Antiguo 28/03/2009, 18:17
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Que esta mal en mi funcion?? ayuda

Si, por supuesto, desde siempre y asi seguira. Estas cadenas tienen su cero terminador como corresponde pero lo que tenes ademas es una array de punteros a cadena (char *[]), en este caso de 5 elementos (0 a 4, cada uno un puntero a una cadena).

Podes comprobarlo viendo el tamaño:
Código:
printf("%d - %d \r\n", sizeof(anim), sizeof(anim) / sizeof(anim[0]));
eso sera en x86: 20 (tamaño de puntero * numero de elementos) y 5 (numero de elementos). Si agregas el 0 (o NULL) como te dije eso cambiara a 24 y 6 respectivamente.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 28/03/2009, 20:29
 
Fecha de Ingreso: enero-2009
Ubicación: Sentado enfrente la PC
Mensajes: 24
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Que esta mal en mi funcion?? ayuda

Grax Ya me funciono....
  #6 (permalink)  
Antiguo 29/03/2009, 01:46
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Que esta mal en mi funcion?? ayuda

De nadas
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:35.