[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