Autor
|
Tema: Como puedo eliminar espacios vacios en un char array? (Leído 6,680 veces)
|
saintmauricioxd
Desconectado
Mensajes: 2
|
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: 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
|
se me ocurre hacer un trim algo improvisado #include <stdio.h> char * trim(char * n); int main() { char x[]=" soy un trim "; char * parametro=&x[0]; char * resultado=trim(parametro); return 0; } char * trim(char * n) { static char a[100]; char * salida=&a[0]; short primero=1,ultimo=1; short tamano=0,espacios=0,contador=0; //borro los espacios del comienzo de la cadena y cuento cuantos caracteres tiene for(int z=0;n[z]!='\0';z++){ if(primero==1 && n[z]!=' '){ a[contador]=n[z]; primero=0; espacios=tamano; contador++; } else { if(primero==0){ a[contador]=n[z]; contador++; } } tamano++; } //borro los espacios de la cadena , poniendo un caracter de final \0 antes de que inicien los espacios for(int y=tamano-1;y>=0;y--){ if(n[y]!=' ' && ultimo==1) { ultimo=0; a[(y+1)-espacios]='\0'; tamano=-1; } } return salida; }
|
|
« Última modificación: 10 Octubre 2015, 20:13 pm por daryo »
|
En línea
|
buenas
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Demasiadas variables :/ #include <stdio.h> #include <string.h> int trim(char* str, char c){ int i,j=0; for(i=0; i<len && str[i]==c; i++); for(j=0; ; j++){ str[j] = str[j+i]; if(str[j+i]=='\0') break; } len = j; if(len>0){ for(i=len-1; i>=0 && str[i]==c; i--, len--); str[i+1] = '\0'; } return len; } int main(){ char str[] = " a b c "; printf("Cadena: '%s'\n", str ); printf("Nueva longitud: %i\n", trim (str , ' ')); printf("Nueva cadena: '%s'\n", str ); }
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
Demasiadas lineas de código :/ #include <stdio.h> #include <string.h> char* trim(char *s, char c) { int i; for(i = strlen(s ) - 1 ; i >= 0 && s [i ] == c ; i --); s[++i] = '\0'; for(i = 0 ; s[i] && s[i] == c ; i++); if(i) return s; }
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Inyectando codigo en espacios vacios de programas
Programación Visual Basic
|
Hendrix
|
7
|
3,553
|
7 Mayo 2006, 10:30 am
por Eternal Idol
|
|
|
¿Cómo validar espacios vacíos en C++?
Programación C/C++
|
Juancho25
|
6
|
20,316
|
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,397
|
12 Febrero 2014, 16:24 pm
por eferion
|
|
|
sustituir espacios vacios en url
Desarrollo Web
|
Marciano_79
|
2
|
3,146
|
7 Septiembre 2016, 17:41 pm
por Marciano_79
|
|
|
[Pregunta]: No enviar espacios vacíos
Desarrollo Web
|
Leguim
|
3
|
2,503
|
26 Marzo 2019, 04:59 am
por Leguim
|
|