Título: comparacion de cadenas Publicado por: m@o_614 en 16 Febrero 2012, 23:09 pm estoy haciendo este programa que me pide que le ingrese datos a 10 personas cualquiera, me pide nombre,edad y estatura. Pero una vez que se los ingreso me pide que le de un nombre cualquiera y este tiene que buscar que si se encuentre, pero tengo un error porque no me esta respetando el strncmp que le puse para comparar las dos cadenas :huh: alguien que me diga donde me estoy equivocando??
Código
de antemano gracias Título: Re: comparacion de cadenas Publicado por: x64core en 17 Febrero 2012, 00:13 am Error:
Código: scanf("%s",&buscarNombre[i]); la variable "i" queda con el valor que se incrementa en el bucle for, debes de establecerla en 0 ya que los arrays empiezan de cero o usar otra variable , tambien: return value strncmp: Citar Returns an integral value indicating the relationship between the strings: A zero value indicates that the characters compared in both strings are all equal. A value greater than zero indicates that the first character that does not match has a greater value in str1 than in str2; And a value less than zero indicates the opposite. Código:
Título: Re: comparacion de cadenas Publicado por: bdoX en 17 Febrero 2012, 00:19 am tienes que tratar los nombres con arreglos bidimencionales, en ves de usar strncmp, usé strcmp, acá de dejo el code, no es la gran cosa, puede mejorarse mucho este codigo pero es para que tengas una idea de como se hace.
Código
saludos! Título: Re: comparacion de cadenas Publicado por: rir3760 en 17 Febrero 2012, 01:41 am Hay que tener cuidado con esto:
Código Ya que no es correcto debido a que la llamada a "setbuf" debe realizarse antes de cualquier llamada a función que procese el stream y no es el caso (debido al bucle). Para evitar problemas lo mejor es leer "stdin" por linea mediante la función "fgets" (o una propia). Un saludo Título: Re: comparacion de cadenas Publicado por: m@o_614 en 18 Febrero 2012, 01:00 am Es correcto que los argumentos de strcmp(cadena1,cadena2) tengan el ????
es que me marca un warning: passing arg 1 of strcmp makes pointer from interger without a cast Título: Re: comparacion de cadenas Publicado por: bdoX en 18 Febrero 2012, 02:06 am Es correcto que los argumentos de strcmp(cadena1,cadena2) tengan el ???? es que me marca un warning: passing arg 1 of strcmp makes pointer from interger without a cast http://www.cplusplus.com/reference/clibrary/cstring/strcmp/ (http://www.cplusplus.com/reference/clibrary/cstring/strcmp/) http://es.wikipedia.org/wiki/Strcmp (http://es.wikipedia.org/wiki/Strcmp) Título: Re: comparacion de cadenas Publicado por: rir3760 en 18 Febrero 2012, 02:13 am Las expresiones que se pasan como argumentos a la función "strcmp" pueden tener cualquier forma siempre y cuando el tipo del resultado sea "char *".
Si tienes un problema (como parece ser) con una llamada en particular publica el código fuente del programa. Un saludo Título: Re: comparacion de cadenas Publicado por: m@o_614 en 18 Febrero 2012, 05:04 am Código
ya le hice todos los cambios que creí convenientes, la libreria string.h, declarar la variable nombre como matriz n-n. Y aun asi no compila correctamente:( Título: Re: comparacion de cadenas Publicado por: bdoX en 18 Febrero 2012, 19:26 pm Todo parece indicar que no viste bien el codigo que te postié.
Código: if(strcmp(nombreBuscado,nombre[NOMBRE][i])==0) Eso está mal. Como ya te dijieron con anterioridad, strcmp() recibe un char *, no un caracter ni nada por el estilo. Código: if(strcmp(nombreBuscado,nombre[i])==0) Debe quedar asi, para que puedas recorrer todos los nombres del array bidimencional. saludos! Título: Re: comparacion de cadenas Publicado por: rir3760 en 19 Febrero 2012, 16:16 pm También se debe cambiar la declaración del array de arrays y ya en eso modificar las macros para que cumplan su función.
Por ejemplo: Código
Un saludo Título: Re: comparacion de cadenas Publicado por: Sagrini en 19 Febrero 2012, 18:11 pm Te dejo el code que he hecho para la ocasión ;) Dos detalles sobre mi código para dejarlo "top":
1. Búscate una forma de sustituir los scanf por otra función más segura y efectiva (¿qué tal fgets/fgets+atoi?) 2. Crea una función para ingresar los datos en un fichero. Si tengo tiempo te añado la version 0.2 con estas mejoras jajaja Código
|