AnimAlf
2006-08-23 04:18:27 UTC
Hola,
No me aclaro y no se por qué pasan estas cosas, me podeis ayudar a
terminar esta función correctamente.
Quiero que me quite los espacios en blanco del principio y del final de
una cadena.
Tal y como está ahora, funciona y hace lo que yo quiero:
DEBUG: Antes: [ cadena ]
DEBUG: return: [cadena]
DEBUG: Despues: [cadena]
pero si lo pruebo con las otras opciones (otra cadena) ... no se por
donde cogerlo. Parece que siempre se tiene que reducir el sizeoff al
retornar, pero no lo entiendo (no lo se):
DEBUG: Antes: [#______cadena______#]
DEBUG: return: [#______cadena______#]
DEBUG: Despues: [#______c]
¿Cómo puedo solucionarlo?
#include <stdio.h>
#include <string.h>
void strtrim (char **flujo){
int caracteres, espacios;
char tmpStr[255];
strcpy (tmpStr, *flujo);
while (tmpStr [0] == ' '){
strcpy (tmpStr, &tmpStr [1]);
}
do {
caracteres = strlen (tmpStr);
if (tmpStr[caracteres-1]==' ') {
espacios=1;
tmpStr [caracteres-1] = '\0';
} else { espacios = 0;}
} while (espacios);
*flujo = tmpStr;
printf ("DEBUG: return:\t[%s]\n",*flujo);
}
int main () {
char * cadena = " cadena ";
/* char * cadena = "#______cadena______#"; */
/* char * cadena = " cad "; */
/* char * cadena = "# cadena "; */
/* char * cadena = " cadena #"; */
printf ("DEBUG: Antes:\t[%s]\n",cadena);
strtrim(&cadena);
printf ("DEBUG: Despues:\t[%s]\n",cadena);
}
-------
Gracias
No me aclaro y no se por qué pasan estas cosas, me podeis ayudar a
terminar esta función correctamente.
Quiero que me quite los espacios en blanco del principio y del final de
una cadena.
Tal y como está ahora, funciona y hace lo que yo quiero:
DEBUG: Antes: [ cadena ]
DEBUG: return: [cadena]
DEBUG: Despues: [cadena]
pero si lo pruebo con las otras opciones (otra cadena) ... no se por
donde cogerlo. Parece que siempre se tiene que reducir el sizeoff al
retornar, pero no lo entiendo (no lo se):
DEBUG: Antes: [#______cadena______#]
DEBUG: return: [#______cadena______#]
DEBUG: Despues: [#______c]
¿Cómo puedo solucionarlo?
#include <stdio.h>
#include <string.h>
void strtrim (char **flujo){
int caracteres, espacios;
char tmpStr[255];
strcpy (tmpStr, *flujo);
while (tmpStr [0] == ' '){
strcpy (tmpStr, &tmpStr [1]);
}
do {
caracteres = strlen (tmpStr);
if (tmpStr[caracteres-1]==' ') {
espacios=1;
tmpStr [caracteres-1] = '\0';
} else { espacios = 0;}
} while (espacios);
*flujo = tmpStr;
printf ("DEBUG: return:\t[%s]\n",*flujo);
}
int main () {
char * cadena = " cadena ";
/* char * cadena = "#______cadena______#"; */
/* char * cadena = " cad "; */
/* char * cadena = "# cadena "; */
/* char * cadena = " cadena #"; */
printf ("DEBUG: Antes:\t[%s]\n",cadena);
strtrim(&cadena);
printf ("DEBUG: Despues:\t[%s]\n",cadena);
}
-------
Gracias