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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  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,211 veces)
sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Cómo extraer caracteres en C
« en: 13 Diciembre 2013, 13:07 pm »

Hola,

Estoy haciendo un programa en C y una opción es extraer caracteres comenzando desde la izquierda y otra opción es extraer caracteres comenzando desde la derecha.

He podido printar solo los caracteres que se han extraido pero no consigo printar el resultado de la cadena.

EXTRAER DESDE LA IZQUIERDA
Código
  1.                      printf("Cuantos caracteres quieres extraer? ");
  2.                      scanf("%d", &extraerIzq);
  3.  
  4.                      for (i=0; i<longitud && i<extraerIzq; i++){
  5.                          printf("\nSe ha extraido: %c", cadena[i]);
  6.                      }

EXTRAER DESDE LA DERECHA
Código
  1. printf("Cuantos caracteres quieres extraer? ");
  2.                      scanf("%d", &extraerDer);
  3.  
  4.                      extraerDer = longitud - (extraerDer > longitud?longitud:extraerDer);
  5.                      for (i = longitud - 1; i >= extraerDer; i--)
  6.                          printf("\nSe ha extraido: %c", cadena[i]);


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Cómo extraer caracteres en C
« Respuesta #1 en: 13 Diciembre 2013, 14:46 pm »

Hola,

...........................................
He podido printar solo los caracteres que se han extraido pero no consigo printar el resultado de la cadena.


Das a entender que además de imprimir los caracteres que extraes los quieres guardar en una nueva cadena, cosa que te faltaría.

Por otro lado sería interesante un bucle que asegure que el número de caracteres a extraer sea inferior a la longitud de la cadena original.

Te dejo una muestra por la izquierda. Análogamente sería para la derecha. Aunque yo personalmente soy partidario en este caso de crear una función que recoja ambos casos.

A ver si te sirve de idea:


Citar
Cuantos caracteres quieres extraer?.Inferior a 9 :12
Cuantos caracteres quieres extraer?.Inferior a 9 :6

Se ha extraido : l
Se ha extraido : e
Se ha extraido : o
Se ha extraido : s
Se ha extraido : a
Se ha extraido : n
Se ha extraido : leosan


Código
  1. #include <stdio.h>
  2.  
  3. int  main(void)
  4. {
  5.    int ch,extraer,longitud,i,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 cadenaIzq[extraer+1];
  16.    for (i=0; i<extraer; i++){
  17.        printf("Se ha extraido : %c\n", cadena[i]);
  18.        cadenaIzq[i]=cadena[i];
  19.    }
  20.    cadenaIzq[i]='\0';
  21.    printf("\nSe ha extraido : %s\n", cadenaIzq);
  22.    return 0;
  23. }
  24.  

Saluditos! ..... !!!!        


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

rir3760


Desconectado Desconectado

Mensajes: 1.639


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

Estoy haciendo un programa en C y una opción es extraer caracteres comenzando desde la izquierda [...]

EXTRAER DESDE LA IZQUIERDA
Código
  1. printf("Cuantos caracteres quieres extraer? ");
  2. scanf("%d", &extraerIzq);
  3.  
  4. for (i=0; i<longitud && i<extraerIzq; i++){
  5.   printf("\nSe ha extraido: %c", cadena[i]);
  6. }
Para imprimir los primeros caracteres de una cadena no es necesario un bucle, puedes utilizar printf con el especificador "%.*s" donde ".*" indica que el siguiente argumento de la función sera el máximo de caracteres a imprimir. Siguiendo tu ejemplo:
Código
  1. printf("Cuantos caracteres quieres extraer? ");
  2. fflush(stdout);
  3. if (scanf("%d", &extraerIzq) == 1 && extraerIzq > 0)
  4.   printf("%.*s\n", extraerIzq, cadena);

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
sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: Cómo extraer caracteres en C
« Respuesta #3 en: 14 Diciembre 2013, 08:55 am »

Gracias por la ayuda, pero "leosansan" el ejemplo que me has puesto era todo lo contrario a lo que quería jeje

A lo que me refería es que me mostrará el resultado de como quedaría una vez con los caracteres extraídos, de todos modos me vendrá bien guardar tu ejemplo porque también me servirá.


Gracias!
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Cómo extraer caracteres en C
« Respuesta #4 en: 14 Diciembre 2013, 13:01 pm »

..................................................................

A lo que me refería es que me mostrará el resultado de como quedaría una vez con los caracteres extraídos, de todos modos me vendrá bien guardar tu ejemplo porque también me servirá.


Sorry, entendí mal.

Aprovecho la aportación de rir3760 y corrijo la cadena final. Creo que sería algo como esto:


Citar
Cuantos caracteres quieres extraer?.Inferior a 9 :6

Cadena original  leosansan

Se ha extraido  leosan

Y queda la cadena : san

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 cadenaIzq[longitud-extraer+1];
  16.    for (i=extraer,j=0; i<longitud; i++,j++)
  17.        cadenaIzq[j]=cadena[i];
  18.    cadenaIzq[longitud-extraer]='\0';
  19.    printf("\nCadena original  %s\n",cadena);
  20.    printf("\nSe ha extraido  %.*s\n", extraer, cadena);
  21.    printf("\nY queda la cadena : %s\n", cadenaIzq);
  22.    return 0;
  23. }
  24.  

Saluditos! ..... !!!!        

REEDITADO.
« Última modificación: 15 Diciembre 2013, 13:35 pm por leosansan » En línea

sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: Cómo extraer caracteres en C
« Respuesta #5 en: 15 Diciembre 2013, 09:31 am »

Perfecto, muchas gracias!!!  ;-)

¿Comenzando a extraer desde la derecha como sería?


Perdona las molestias pero es que aún soy novatito en C  :P
« Última modificación: 15 Diciembre 2013, 09:46 am por sora_ori » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Cómo extraer caracteres en C
« Respuesta #6 en: 15 Diciembre 2013, 13:24 pm »

¿Algo como esto?:

Citar
Cuantos caracteres quieres extraer?.Inferior a 9 :6

Cadena original  leosansan

Se ha extraido:sansan

Y queda la cadena : leo


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.    char cadenaDcha[longitud-extraer+1];
  17.    for (i=0,j=0; i<longitud-extraer; i++,j++)
  18.        cadenaDcha[j]=cadena[i];
  19.    cadenaDcha[j]='\0';
  20.    printf("\nCadena original  %s\n",cadena);
  21.    printf("\nSe ha extraido:");
  22.    for (i=longitud-extraer; i<longitud; i++)
  23.        printf("%c", cadena[i]);
  24.    printf("\n\nY queda la cadena : %s\n", cadenaDcha);
  25.    return 0;
  26. }
  27. }
  28.  

Se puede mejorar creando un array cadenaIzda que guarde el resto de la cadena, ya que como está sólo la imprimo. ¿Te animas?.

Como ves puedes incluir en un sólo código ambos casos. No lo he hecho por pereza xD!.


Saluditos! ..... !!!!        
« Última modificación: 15 Diciembre 2013, 14:30 pm por leosansan » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.414


ASMático


Ver Perfil WWW
Re: Cómo extraer caracteres en C
« Respuesta #7 en: 15 Diciembre 2013, 14:07 pm »

Haced la clase String para C jaja. Al menos haced una réplica de las funciones y operadores básicos xDD
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Cómo extraer caracteres en C
« Respuesta #8 en: 15 Diciembre 2013, 14:33 pm »


¿Te puedes explicar mejor ivancea96?.

Saluditos! ..... !!!!       
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.414


ASMático


Ver Perfil WWW
Re: Cómo extraer caracteres en C
« Respuesta #9 en: 15 Diciembre 2013, 15:02 pm »

Naada era de coña. Pero más explicado no puede estar xD
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,685 Último mensaje 24 Diciembre 2006, 01:05 am
por Songoku
Extraer voz de un archivo o extraer la musica solamente !!!!!
Multimedia
magnox 2 2,921 Ú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,717 Último mensaje 4 Abril 2011, 19:03 pm
por 79137913
Extraer 5 primero caracteres
Foro Libre
daniel003 1 1,129 Último mensaje 10 Agosto 2016, 03:41 am
por engel lex
[VBS] ¿Se pueden extraer caracteres con VBS?
Scripting
.:Xx4NG3LxX:. 2 802 Último mensaje 1 Febrero 2020, 21:57 pm
por .:Xx4NG3LxX:.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines