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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cómo extraer caracteres en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Cómo extraer caracteres en C  (Leído 5,199 veces)
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Cómo extraer caracteres en C
« Respuesta #10 en: 15 Diciembre 2013, 15:22 pm »

Naada era de coña. Pero más explicado no puede estar xD

Sorry, "toy" sencible, pero ahora lo pillo, tipo C++. ;-)

Aprovecho para postear el código con las dos operaciones a la vez:

Código
  1. #include <stdio.h>
  2.  
  3. int  main(void)
  4. {
  5.    int ch,extraer,longitud,i,j,flag;
  6.    char cadena[]="leosansan";
  7.    for (i=0;cadena[i] ;i++);
  8.    longitud=i;
  9.    do {
  10.        printf("Cuantos caracteres quieres extraer?.Inferior a %d :",longitud);
  11.        fflush(stdout);
  12.        flag=(scanf("%d", &extraer));
  13.        while( (ch = getchar()) != '\n' );
  14.    }while (extraer > longitud ||flag==0);
  15.    char cadenaDcha[longitud-extraer+1];
  16.    for (i=0,j=0; i<longitud-extraer; i++,j++)
  17.        cadenaDcha[j]=cadena[i];
  18.    cadenaDcha[j]='\0';
  19.    printf("\nCadena original:  %s\n",cadena);
  20.    printf("\nSe ha extraido por la derecha: ");
  21.    fflush(stdout);
  22.    for (i=longitud-extraer; i<longitud; i++)
  23.        printf("%c", cadena[i]);
  24.        printf("\n\nY queda la cadena: %s\n", cadenaDcha);
  25.  
  26.    char cadenaIzq[longitud-extraer+1];
  27.    for (i=extraer,j=0; i<longitud; i++,j++)
  28.        cadenaIzq[j]=cadena[i];
  29.    cadenaIzq[j]='\0';
  30.    printf("\nSe ha extraido por la izquierda: %.*s\n", extraer, cadena);
  31.    printf("\nY queda la cadena: %s\n", cadenaIzq);
  32.    return 0;
  33. }
  34.  

Pero mejor es el que sigue, ya que guarda en arrays los restos de las cadenas:

Código
  1.  
  2. #include <stdio.h>
  3.  
  4. int  main(void)
  5. {
  6.    int ch,extraer,longitud,i,j,flag;
  7.    char cadena[]="leosansan";
  8.    for (i=0;cadena[i] ;i++);
  9.    longitud=i;
  10.    do {
  11.        printf("Cuantos caracteres quieres extraer?.Inferior a %d :",longitud);
  12.        fflush(stdout);
  13.        flag=(scanf("%d", &extraer));
  14.        while( (ch = getchar()) != '\n' );
  15.    }while (extraer > longitud ||flag==0);
  16.  
  17.    char cadenaDcha[longitud-extraer+1],cadenaIzq[longitud-extraer+1],cadenaDcha_resto[extraer],cadenaIzqda_resto[extraer];
  18.    printf("\nCadena original:  %s\n",cadena);
  19.  
  20.    for (i=0,j=0; i<longitud-extraer; i++,j++)
  21.        cadenaDcha[j]=cadena[i];
  22.    cadenaDcha[j]='\0';
  23.    for (i=longitud-extraer,j=0; i<longitud; i++,j++)
  24.        cadenaDcha_resto[j]=cadena[i];
  25.    cadenaDcha_resto[j]='\0';
  26.    printf("\nSe ha extraido por la derecha: %s\n",cadenaDcha_resto);
  27.    printf("\nY queda la cadena: %s\n", cadenaDcha);
  28.  
  29.    for (i=extraer,j=0; i<longitud; i++,j++)
  30.        cadenaIzq[j]=cadena[i];
  31.    cadenaIzq[j]='\0';
  32.    for (i=0,j=0; i<extraer; i++,j++)
  33.        cadenaIzqda_resto[j]=cadena[i];
  34.    cadenaIzqda_resto[j]='\0';
  35.    printf("\nSe ha extraido por la izquierda: %s\n", cadenaIzqda_resto);
  36.    printf("\nY queda la cadena: %s\n", cadenaIzq);
  37.    return 0;
  38. }
  39.  

Ya sólo queda hacerlo mediante una función que sirva tanto para la izquierda como para la derecha aprovechando que esas partes del código son cuasi-iguales.

Saluditos! ..... !!!!        


« Última modificación: 15 Diciembre 2013, 15:28 pm por leosansan » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Cómo extraer caracteres en C
« Respuesta #11 en: 16 Diciembre 2013, 13:54 pm »

Perdonen que postee nuevamente, pero el aporte quedo pendiente y por ser tan diferente lo hago así.

Esta vez construyo una función a la que invoco para extraer tanto por la derecha como por la izquierda:


Código
  1. #include <stdio.h>
  2.  
  3. void extraer_y_resto (char *Cadena_lado, char *Cadena,char *Cadena_resto,int a, int b,int c, int d);
  4. void imprimir(char *msg,char *Cadena_resto,char *Cadena_lado);
  5.  
  6. int  main(void)
  7. {
  8.    int ch,extraer,longitud,i,j,flag;
  9.    char cadena[]="leosansan";
  10.    for (i=0;cadena[i] ;i++);
  11.    longitud=i;
  12.    do {
  13.        printf("Cuantos caracteres quieres extraer?.Inferior a %d :",longitud);
  14.        fflush(stdout);
  15.        flag=(scanf("%d", &extraer));
  16.        while( (ch = getchar()) != '\n' );
  17.    }while (extraer > longitud ||flag==0);
  18.    char cadena_Lado[longitud-extraer+1],cadena_resto[extraer];
  19.    printf("\nCadena original:  %s\n",cadena);
  20.    extraer_y_resto (cadena_Lado, cadena,cadena_resto,0,longitud-extraer ,longitud-extraer, longitud);
  21.    imprimir ("derecha",cadena_resto,cadena_Lado);
  22.    extraer_y_resto (cadena_Lado,cadena, cadena_resto, extraer, longitud, 0,extraer);
  23.    imprimir ("izquierda",cadena_resto,cadena_Lado);
  24.    return 0;
  25. }
  26.  
  27. void extraer_y_resto (char *Cadena_lado, char *Cadena,char *Cadena_resto,int a, int b,int c, int d)
  28. {
  29.    int i,j;
  30.    for (i=a,j=0; i<b; i++,j++)
  31.        Cadena_lado[j]=Cadena[i];
  32.    Cadena_lado[j]='\0';
  33.    for (i=c,j=0; i<d; i++,j++)
  34.        Cadena_resto[j]=Cadena[i];
  35.    Cadena_resto[j]='\0';
  36. }
  37. void imprimir(char *msg,char *Cadena_resto,char *Cadena_lado)
  38. {
  39.    printf("\nSe ha extraido por la %s: %s\n",msg,Cadena_resto);
  40.    printf("\nY queda la cadena: %s\n", Cadena_lado);
  41. }
  42.  

Saluditos! ..... !!!!        


« Última modificación: 16 Diciembre 2013, 14:26 pm por leosansan » En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como extraer el Audio a un video y guardarlo como wav o mp3? « 1 2 »
Multimedia
Lainuxxx 10 306,675 Último mensaje 24 Diciembre 2006, 01:05 am
por Songoku
Extraer voz de un archivo o extraer la musica solamente !!!!!
Multimedia
magnox 2 2,917 Último mensaje 28 Septiembre 2004, 17:16 pm
por theloop
Extraer parte del texto, de una cadena de caracteres de un tex box...
Programación Visual Basic
angelcont22 5 10,714 Último mensaje 4 Abril 2011, 19:03 pm
por 79137913
Extraer 5 primero caracteres
Foro Libre
daniel003 1 1,125 Último mensaje 10 Agosto 2016, 03:41 am
por engel lex
[VBS] ¿Se pueden extraer caracteres con VBS?
Scripting
.:Xx4NG3LxX:. 2 801 Último mensaje 1 Febrero 2020, 21:57 pm
por .:Xx4NG3LxX:.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines