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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como puedo eliminar espacios vacios en un char array?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como puedo eliminar espacios vacios en un char array?  (Leído 6,605 veces)
saintmauricioxd

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Como puedo eliminar espacios vacios en un char array?
« en: 9 Octubre 2015, 08:05 am »

Hola comunidad! estoy programando en C y estoy teniendo algunos problemas, soy nuevo en este lenguaje y necesito hacer lo siguiente, tengo un char array declarado asi:
Código:
char array[10];
array = " /home";
(esto no se si lo estoy escribiendo bien, pero basicamente es esa cadena que tiene mi array) y porsupuesto agregue al final '\0', ahora lo que necesito es eliminar esos espacios vacios que en este caso son 2, esto por los caracteres especiales que me genera el script CGI cuando agrego frontslashes (/) tuve que reemplazar esos valores vacios por espacios en blanco, y ahora estoy teniendo problemas al procesar esa cadena por esos espacios en blanco, como puedo hacer un "trim" como en java para eliminar espacios vacios de mi array??


En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: Como puedo eliminar espacios vacios en un char array?
« Respuesta #1 en: 10 Octubre 2015, 19:36 pm »

se me ocurre hacer un trim algo improvisado
Código
  1. #include <stdio.h>
  2.  
  3. char * trim(char * n);
  4. int main()
  5. {
  6.    char x[]="    soy un trim     ";
  7.    char * parametro=&x[0];
  8.    char * resultado=trim(parametro);
  9.  
  10.    printf(":%s:",resultado);
  11.    return 0;
  12.  
  13. }
  14.  
  15. char * trim(char * n)
  16. {
  17.    static char a[100];
  18.    char * salida=&a[0];
  19.    short primero=1,ultimo=1;
  20.    short tamano=0,espacios=0,contador=0;
  21.    //borro los espacios del comienzo de la cadena y cuento cuantos caracteres tiene
  22.    for(int z=0;n[z]!='\0';z++){
  23.        if(primero==1 && n[z]!=' '){
  24.            a[contador]=n[z];
  25.            primero=0;
  26.            espacios=tamano;
  27.            contador++;
  28.        }
  29.        else
  30.        {
  31.            if(primero==0){
  32.            a[contador]=n[z];
  33.            contador++;
  34.            }
  35.        }
  36.    tamano++;
  37.    }
  38.    //borro los espacios de la cadena , poniendo un caracter de final  \0 antes de que inicien los espacios
  39.    for(int y=tamano-1;y>=0;y--){
  40.        if(n[y]!=' ' && ultimo==1)
  41.        {
  42.           ultimo=0;
  43.           a[(y+1)-espacios]='\0';
  44.           tamano=-1;
  45.        }
  46.    }
  47. return salida;
  48. }
  49.  


« Última modificación: 10 Octubre 2015, 20:13 pm por daryo » En línea

buenas
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Como puedo eliminar espacios vacios en un char array?
« Respuesta #2 en: 10 Octubre 2015, 22:59 pm »

Demasiadas variables :/

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int trim(char* str, char c){
  5. int len = strlen(str);
  6. int i,j=0;
  7.  
  8. for(i=0; i<len && str[i]==c; i++);
  9. for(j=0; ; j++){
  10. str[j] = str[j+i];
  11. if(str[j+i]=='\0')
  12. break;
  13. }
  14. len = j;
  15. if(len>0){
  16. for(i=len-1; i>=0 && str[i]==c; i--, len--);
  17. str[i+1] = '\0';
  18. }
  19. return len;
  20. }
  21.  
  22. int main(){
  23. char str[] = "    a b c ";
  24. printf("Cadena: '%s'\n", str);
  25. printf("Nueva longitud: %i\n", trim(str, ' '));
  26. printf("Nueva cadena: '%s'\n", str);
  27. }
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Como puedo eliminar espacios vacios en un char array?
« Respuesta #3 en: 11 Octubre 2015, 00:04 am »

Demasiadas lineas de código :/

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char* trim(char *s, char c)
  5. {
  6.    int i;
  7.  
  8.    for(i = strlen(s) - 1 ; i >= 0 && s[i] == c ; i--);
  9.    s[++i] = '\0';
  10.  
  11.    for(i = 0 ; s[i] && s[i] == c ; i++);
  12.  
  13.    if(i)
  14.        memmove(s , s + i , strlen(s) - i + 1);
  15.  
  16.    return s;
  17. }
  18.  
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Como puedo eliminar espacios vacios en un char array?
« Respuesta #4 en: 11 Octubre 2015, 11:20 am »

saintmauricioxd , has venido buscando ayuda sobre como hacer un trim, y te irás con el trim más eficiente y corto jamás hecho en todo elhacker.net.
Empieza la caza
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Inyectando codigo en espacios vacios de programas
Programación Visual Basic
Hendrix 7 3,537 Último mensaje 7 Mayo 2006, 10:30 am
por Eternal Idol
¿Cómo validar espacios vacíos en C++?
Programación C/C++
Juancho25 6 20,253 Último mensaje 6 Mayo 2013, 15:14 pm
por rir3760
No puedo asignar un char a un array de dos dimensiones
Programación C/C++
SCUMM 5 3,350 Último mensaje 12 Febrero 2014, 16:24 pm
por eferion
sustituir espacios vacios en url
Desarrollo Web
Marciano_79 2 3,112 Último mensaje 7 Septiembre 2016, 17:41 pm
por Marciano_79
[Pregunta]: No enviar espacios vacíos
Desarrollo Web
Leguim 3 2,465 Último mensaje 26 Marzo 2019, 04:59 am
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines