Título: ayuda principiante C Publicado por: marinobeach en 29 Enero 2014, 15:18 pm Hola buenas, tengo que implementar un par de funciones. Pruebo las funciones por separadas y la primera funcion no me funciona. Simplemente quiero eliminar los caracteres especificados por el usuario de una cadena de caracteres y luego pasar la cadena limpia a otra.
Os dejo el codigo #include <stdio.h> #include <stdlib.h> #include <string.h> /* * */ int main(int argc, char** argv) { char ori[20], dst[20], seps[5]; int i = 0, j = 0, tam = 19; printf("cual es tu cadena de caracteres??\n"); gets(ori); printf("introduce los caracteres a eliminar\n"); gets(seps); for (i = 0; i <= tam; i++) { for (j = 0; j < 5; j++) { if ( strcmp ( ori, seps[j] ) ) { strcpy ( ori,' '); } } } strcpy ( dst, ori ); printf("tu nueva cadena de caracteres es %s \n" , dst); return (EXIT_SUCCESS); } me salen warnings en #include <string.h> if ( strcmp ( ori, seps[j] ) ) strcpy ( ori,' '); Título: Re: ayuda principiante C Publicado por: vangodp en 29 Enero 2014, 15:58 pm veo cosas que no entiendo :/
intentas comparar una posicion en concreto de la cadena seps[posicion] con toda una cadena(ori) ori, seps[j] en todo caso comparar seria: ori[contadorfor1], seps[contadorfor2] ¿no? No lo entiendo. despues lo mismo con strcpy intentas copiar un espacio (char) pero no le dices donde encajar dentro de ori[?]. ¿strcmp no compara cadenas completas? O sirve para ver si hay "espacio" en toda una cadena? ' ' ---> ori[0]?, ori[1]?, ori[2]?.... ¿En que posición va? ¿Eso se puede hacer? ¿Seria algo como: char A[10] = {' '};? No tengo certeza si se puede hacer. :/ Creo que tengo mas dudas que tu :laugh: Título: Re: ayuda principiante C Publicado por: rir3760 en 29 Enero 2014, 16:10 pm tengo que implementar un par de funciones. Pruebo las funciones por separadas y la primera funcion no me funciona. Simplemente quiero eliminar los caracteres especificados por el usuario de una cadena de caracteres y luego pasar la cadena limpia a otra. Problemas con el programa hay bastantes empezando por asumir que la longitud de las cadenas siempre sera la máxima y utilizar las funciones strcmp y strcpy para procesar caracteres cuando esto no es necesario (puedes utilizar los operadores de asignación y comparación sin problemas). Por ultimo se debe evitar el uso de la función gets, las razones de ello en el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).El programa corregido (pero todavía con la función gets, hay que sustituirla por fgets): Código
Un saludo |