elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda principiante C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda principiante C  (Leído 1,684 veces)
marinobeach

Desconectado Desconectado

Mensajes: 1


Ver Perfil
ayuda principiante C
« 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,'  ');


En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: ayuda principiante C
« Respuesta #1 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:


« Última modificación: 29 Enero 2014, 16:02 pm por vangodp » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ayuda principiante C
« Respuesta #2 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|.

El programa corregido (pero todavía con la función gets, hay que sustituirla por fgets):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define NUM_CHARS  20
  5.  
  6. int main(void)
  7. {
  8.   char ori[NUM_CHARS];
  9.   char dst[NUM_CHARS];
  10.   char sep[NUM_CHARS];
  11.   int i;
  12.   int j;
  13.   int k;
  14.  
  15.   puts("Tecleala cadena de prueba:");
  16.   gets(ori);
  17.  
  18.   puts("Teclea los caractere a eliminar:");
  19.   gets(sep);
  20.  
  21.   k = 0;
  22.   for (i = 0; ori[i] != '\0'; i++){
  23.      for (j = 0;  sep[j] != '\0' && sep[j] != ori[i]; j++)
  24.         ;
  25.  
  26.      if (sep[j] == '\0')
  27.         dst[k++] = ori[i];
  28.   }
  29.   dst[k] = '\0';
  30.  
  31.   printf("La cadena modificada es %s\n", dst);
  32.  
  33.   return EXIT_SUCCESS;
  34. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda soy principiante! « 1 2 3 »
Programación Visual Basic
xDie 28 8,152 Último mensaje 18 Enero 2007, 20:39 pm
por xDie
ayuda soy principiante
Ingeniería Inversa
nsoffia 4 4,940 Último mensaje 21 Junio 2008, 23:28 pm
por apuromafo CLS
Ayuda con .bat <Principiante>
Scripting
ChaCkaLneT 1 3,307 Último mensaje 28 Diciembre 2008, 17:00 pm
por slyfox
Ayuda principiante! :(
Programación C/C++
Makum 1 2,282 Último mensaje 14 Junio 2010, 10:33 am
por Gallu
ayuda a un principiante
GNU/Linux
danimarsan 0 1,502 Último mensaje 17 Noviembre 2011, 01:01 am
por danimarsan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines