[C con Clase] Funcion strlen me da error el printf

Joe Tend neojtr en hotmail.com
Dom Nov 8 16:00:21 CET 2009


nombres es un array de 100 posiciones tipo Cadena40 que es un char de 40 posiciones, la funcion
strlen debe recibir una sola cadena de caracteres para saber el numero de estos caracteres,
correria con algo como strlen(nombres["Posicion"]);

***************************************************************************
Subject: [C con Clase] Funcion strlen me da error el printf








Hola a todos:

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. 

 

gracias

atte:Laura Costabel

lista con clase C

 

#include<stdio.h>
#include<conio.c>
#include<string.h>

typedef char Cadena40 [40];
Cadena40 nombres [100];
    
/* 
 * comparar implementa comparacion de nombres
 */
int comparar(int i, int j) {
//     printf("%s - %s - %d \n", nombres[i], nombres[j], strcmp(nombres[i], nombres[j]));
     return strcmp(nombres[i], nombres[j]);
} // end comparar()

/* 
 * swap implementa el intercambio de valores
 */
void swap(int i, int j) {
     char aux[40];
//     printf("%s - %s \n", nombres[i], nombres[j]);
     strcpy(aux, nombres[i]);
//     printf("Swap %s \n", aux);
     strcpy(nombres[i], nombres[j]);
     strcpy(nombres[j], aux);
//     printf("%s - %s \n", nombres[i], nombres[j]);
} // end swap()

/* 
 * ordenar implementa ordenamiento ascendente de nombres
 */
void ordenar(int cantidadpersonas) {
     for (int i = 0; i < cantidadpersonas - 1; i++) {
         for(int j = i + 1; j < cantidadpersonas; j++) {
  //               printf("%s - %s \n", nombres[i], nombres[j]);
                 if(comparar(i, j) == 1) {
                      swap(i, j);
                 }
         }
     }
} // end ordenar()

/* 
 * mostrar implementa mostrar los nombres
 */
void mostrar(int cantidadpersonas) {
     for (int i = 0;  i < cantidadpersonas; i++) {
          printf("\n %d  %s ", i, nombres[i]);
     }
     printf("\n Oprima return para continuar ...");
     getch();
} // end mostrar()

/*
 * main Rutina principal
 */


//* Comparamos para la longitud
int comlen(int i, int j) {
//     printf("%s - %s - %d \n", nombres[i], nombres[j], strcmp(nombres[i], nombres[j]));
     int a = strlen (nombres [i]);
     int b = strlen (nombres [j]);
     int c;
     if (a==b) c=0;
        else if (a<b) c=-1;
        else c=1;      
     return c;
} // end comparar()

//* Ordenamos para la longitud
void ordlen(int cantidadpersonas) {
     for (int i = 0; i < cantidadpersonas - 1; i++) {
         for(int j = i + 1; j < cantidadpersonas; j++) {
  //               printf("%s - %s \n", nombres[i], nombres[j]);
                 if(comlen(i, j) == 1) {
                      swap(i, j);
                 }
         }
     }
} // end ordenar()


int main () {
     int cantidadpersonas;
     // Ingresar cantidad de personas
     printf("\n Ingrese la cantidad de la lista de personas: ");
     scanf("%d",&cantidadpersonas);
     // Ingresar los nombres
     for (int i = 0;  i < cantidadpersonas; i++) {
          printf("\n Introducir el nombre %d : ", i);
          scanf("%s", &nombres[i]);
     }
     // Mostrar nombres ingresados
     mostrar(cantidadpersonas);
     // Ordenar la lista de nombres
     ordenar(cantidadpersonas);
     // Mostrar lista ordenada
     printf("\n\n LISTA ORDENADA ALFABETICAMENTE\n");
     
        
     mostrar(cantidadpersonas);
     printf("\n\n LISTA ORDENADA POR LONGITUD\n");
     //*    printf("\n La longitud de\"%s\" es %d", nombres,strlen(nombres);// esto me da error no se porque
     
     ordlen(cantidadpersonas);
     // Mostrar lista ordenada  
     mostrar(cantidadpersonas);
     return 0;
} // end main()

 		 	   		  
Guardá y compartí fotos, archivos, documentos y más. ¡Con Windows Live tienes 25 GB gratis! Probalo ahora. 		 	   		  
_________________________________________________________________
Connect to the next generation of MSN Messenger 
http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20091108/829ff794/attachment.html>


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