typedef char Cadena40 [40];<br>Cadena40 nombres [100];<br><br>a ver..la funcion strlen espera que le pases un puntero, aqui la usaste bien   int a = strlen (nombres [i]); puesto que nombres es un doble puntero, <br><br>pero cuando haces lo siguiente<br>
<font style="background-color: rgb(255, 255, 0);">//*    printf("\n La longitud de\"%s\" es %d", nombres,strlen(nombres);// esto me da error no se porque<br><br><br></font>estas pasando a strlen un doble puntero, en memoria tienes un array de direcciones primeramente , con un array de char asociado a cada direccion de memoria. por eso no tiene sentido que le pases al strlen "cadena" puesto que lo que va a analizar no es nada que termine en "\0" ni NULL ni 0, <br>
<br><div class="gmail_quote">El 7 de noviembre de 2009 20:23, Laura Gabriela Costabel <span dir="ltr"><<a href="mailto:lau_gaby_costabel@hotmail.com">lau_gaby_costabel@hotmail.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;">




<div>
Hola a todos:<br>
mire aqui les adjunto el programa q esta hecho con el dev c++, para q me puedan ayudar, hice tantas modificaciones, pero nada sigue saltando el mismo error. <br>
 <br>
gracias<br>
atte:Laura Costabel<br>
lista con clase C<br>
 <br>
#include<stdio.h><br>#include<conio.c><br>#include<string.h><br>
typedef char Cadena40 [40];<br>Cadena40 nombres [100];<br>    <br>/* <br> * comparar implementa comparacion de nombres<br> */<br>int comparar(int i, int j) {<br>//     printf("%s - %s - %d \n", nombres[i], nombres[j], strcmp(nombres[i], nombres[j]));<br>
     return strcmp(nombres[i], nombres[j]);<br>} // end comparar()<br>
/* <br> * swap implementa el intercambio de valores<br> */<br>void swap(int i, int j) {<br>     char aux[40];<br>//     printf("%s - %s \n", nombres[i], nombres[j]);<br>     strcpy(aux, nombres[i]);<br>//     printf("Swap %s \n", aux);<br>
     strcpy(nombres[i], nombres[j]);<br>     strcpy(nombres[j], aux);<br>//     printf("%s - %s \n", nombres[i], nombres[j]);<br>} // end swap()<br>
/* <br> * ordenar implementa ordenamiento ascendente de nombres<br> */<br>void ordenar(int cantidadpersonas) {<br>     for (int i = 0; i < cantidadpersonas - 1; i++) {<br>         for(int j = i + 1; j < cantidadpersonas; j++) {<br>
  //               printf("%s - %s \n", nombres[i], nombres[j]);<br>                 if(comparar(i, j) == 1) {<br>                      swap(i, j);<br>                 }<br>         }<br>     }<br>} // end ordenar()<br>

/* <br> * mostrar implementa mostrar los nombres<br> */<br>void mostrar(int cantidadpersonas) {<br>     for (int i = 0;  i < cantidadpersonas; i++) {<br>          printf("\n %d  %s ", i, nombres[i]);<br>     }<br>
     printf("\n Oprima return para continuar ...");<br>     getch();<br>} // end mostrar()<br>
/*<br> * main Rutina principal<br> */<br>
<br>//* Comparamos para la longitud<br>int comlen(int i, int j) {<br>//     printf("%s - %s - %d \n", nombres[i], nombres[j], strcmp(nombres[i], nombres[j]));<br>     int a = strlen (nombres [i]);<br>     int b = strlen (nombres [j]);<br>
     int c;<br>     if (a==b) c=0;<br>        else if (a<b) c=-1;<br>        else c=1;      <br>     return c;<br>} // end comparar()<br>
//* Ordenamos para la longitud<br>void ordlen(int cantidadpersonas) {<br>     for (int i = 0; i < cantidadpersonas - 1; i++) {<br>         for(int j = i + 1; j < cantidadpersonas; j++) {<br>  //               printf("%s - %s \n", nombres[i], nombres[j]);<br>
                 if(comlen(i, j) == 1) {<br>                      swap(i, j);<br>                 }<br>         }<br>     }<br>} // end ordenar()<br>
<br>int main () {<br>     int cantidadpersonas;<br>     // Ingresar cantidad de personas<br>     printf("\n Ingrese la cantidad de la lista de personas: ");<br>     scanf("%d",&cantidadpersonas);<br>
     // Ingresar los nombres<br>     for (int i = 0;  i < cantidadpersonas; i++) {<br>          printf("\n Introducir el nombre %d : ", i);<br>          scanf("%s", &nombres[i]);<br>     }<br>     // Mostrar nombres ingresados<br>
     mostrar(cantidadpersonas);<br>     // Ordenar la lista de nombres<br>     ordenar(cantidadpersonas);<br>     // Mostrar lista ordenada<br>     printf("\n\n LISTA ORDENADA ALFABETICAMENTE\n");<br>     <br>        <br>
     mostrar(cantidadpersonas);<br>     printf("\n\n LISTA ORDENADA POR LONGITUD\n");<br>     <font style="background-color: rgb(255, 255, 0);">//*    printf("\n La longitud de\"%s\" es %d", nombres,strlen(nombres);// esto me da error no se porque</font><br>
     <br>     ordlen(cantidadpersonas);<br>     // Mostrar lista ordenada  <br>     mostrar(cantidadpersonas);<br>     return 0;<br>} // end main()<br><br>                                     <br><hr>Guardá y compartí fotos, archivos, documentos y más. <a href="http://skydrive.live.com" target="_blank">¡Con Windows Live tienes 25 GB gratis! Probalo ahora.</a></div>

<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></blockquote></div><br>