Autor
|
Tema: Cómo extraer caracteres en C (Leído 7,333 veces)
|
leosansan
Desconectado
Mensajes: 1.314
|
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:#include <stdio.h> int main(void) { int ch,extraer,longitud,i,j,flag; char cadena[]="leosansan"; for (i=0;cadena[i] ;i++); longitud=i; do { printf("Cuantos caracteres quieres extraer?.Inferior a %d :",longitud); fflush(stdout); flag=(scanf("%d", &extraer)); while( (ch = getchar()) != '\n' ); }while (extraer > longitud ||flag==0); char cadenaDcha[longitud-extraer+1]; for (i=0,j=0; i<longitud-extraer; i++,j++) cadenaDcha[j]=cadena[i]; cadenaDcha[j]='\0'; printf("\nCadena original: %s\n",cadena); printf("\nSe ha extraido por la derecha: "); fflush(stdout); for (i=longitud-extraer; i<longitud; i++) printf("%c", cadena[i]); printf("\n\nY queda la cadena: %s\n", cadenaDcha); char cadenaIzq[longitud-extraer+1]; for (i=extraer,j=0; i<longitud; i++,j++) cadenaIzq[j]=cadena[i]; cadenaIzq[j]='\0'; printf("\nSe ha extraido por la izquierda: %.*s\n", extraer, cadena); printf("\nY queda la cadena: %s\n", cadenaIzq); return 0; }
Pero mejor es el que sigue, ya que guarda en arrays los restos de las cadenas: #include <stdio.h> int main(void) { int ch,extraer,longitud,i,j,flag; char cadena[]="leosansan"; for (i=0;cadena[i] ;i++); longitud=i; do { printf("Cuantos caracteres quieres extraer?.Inferior a %d :",longitud); fflush(stdout); flag=(scanf("%d", &extraer)); while( (ch = getchar()) != '\n' ); }while (extraer > longitud ||flag==0); char cadenaDcha[longitud-extraer+1],cadenaIzq[longitud-extraer+1],cadenaDcha_resto[extraer],cadenaIzqda_resto[extraer]; printf("\nCadena original: %s\n",cadena); for (i=0,j=0; i<longitud-extraer; i++,j++) cadenaDcha[j]=cadena[i]; cadenaDcha[j]='\0'; for (i=longitud-extraer,j=0; i<longitud; i++,j++) cadenaDcha_resto[j]=cadena[i]; cadenaDcha_resto[j]='\0'; printf("\nSe ha extraido por la derecha: %s\n",cadenaDcha_resto); printf("\nY queda la cadena: %s\n", cadenaDcha); for (i=extraer,j=0; i<longitud; i++,j++) cadenaIzq[j]=cadena[i]; cadenaIzq[j]='\0'; for (i=0,j=0; i<extraer; i++,j++) cadenaIzqda_resto[j]=cadena[i]; cadenaIzqda_resto[j]='\0'; printf("\nSe ha extraido por la izquierda: %s\n", cadenaIzqda_resto); printf("\nY queda la cadena: %s\n", cadenaIzq); return 0; }
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
Mensajes: 1.314
|
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:#include <stdio.h> void extraer_y_resto (char *Cadena_lado, char *Cadena,char *Cadena_resto,int a, int b,int c, int d); void imprimir(char *msg,char *Cadena_resto,char *Cadena_lado); int main(void) { int ch,extraer,longitud,i,j,flag; char cadena[]="leosansan"; for (i=0;cadena[i] ;i++); longitud=i; do { printf("Cuantos caracteres quieres extraer?.Inferior a %d :",longitud); fflush(stdout); flag=(scanf("%d", &extraer)); while( (ch = getchar()) != '\n' ); }while (extraer > longitud ||flag==0); char cadena_Lado[longitud-extraer+1],cadena_resto[extraer]; printf("\nCadena original: %s\n",cadena); extraer_y_resto (cadena_Lado, cadena,cadena_resto,0,longitud-extraer ,longitud-extraer, longitud); imprimir ("derecha",cadena_resto,cadena_Lado); extraer_y_resto (cadena_Lado,cadena, cadena_resto, extraer, longitud, 0,extraer); imprimir ("izquierda",cadena_resto,cadena_Lado); return 0; } void extraer_y_resto (char *Cadena_lado, char *Cadena,char *Cadena_resto,int a, int b,int c, int d) { int i,j; for (i=a,j=0; i<b; i++,j++) Cadena_lado[j]=Cadena[i]; Cadena_lado[j]='\0'; for (i=c,j=0; i<d; i++,j++) Cadena_resto[j]=Cadena[i]; Cadena_resto[j]='\0'; } void imprimir(char *msg,char *Cadena_resto,char *Cadena_lado) { printf("\nSe ha extraido por la %s: %s\n",msg,Cadena_resto); printf("\nY queda la cadena: %s\n", Cadena_lado); }
Saluditos! ..... !!!!
|
|
« Última modificación: 16 Diciembre 2013, 14:26 pm por leosansan »
|
En línea
|
|
|
|
|
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
|
309,499
|
24 Diciembre 2006, 01:05 am
por Songoku
|
|
|
Extraer voz de un archivo o extraer la musica solamente !!!!!
Multimedia
|
magnox
|
2
|
3,996
|
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
|
12,704
|
4 Abril 2011, 19:03 pm
por 79137913
|
|
|
Extraer 5 primero caracteres
Foro Libre
|
daniel003
|
1
|
1,815
|
10 Agosto 2016, 03:41 am
por engel lex
|
|
|
[VBS] ¿Se pueden extraer caracteres con VBS?
Scripting
|
.:Xx4NG3LxX:.
|
2
|
2,271
|
1 Febrero 2020, 21:57 pm
por .:Xx4NG3LxX:.
|
|