Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Escribir espacios en blanco

Estas en el tema de Escribir espacios en blanco en el foro de C/C++ en Foros del Web. Saludos Estoy haciendo un for concatenando espcios en blanco " " a una cadena, pero cuando veo la cadena, solamente me toma el primer espacio ...
  #1 (permalink)  
Antiguo 20/05/2008, 13:00
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 4 meses
Puntos: 1
Escribir espacios en blanco

Saludos

Estoy haciendo un for concatenando espcios en blanco " " a una cadena, pero cuando veo la cadena, solamente me toma el primer espacio en blanco.

Hay alguna forma en especial de mandar a escribir un espacio en blanco " " dentro de una cadena?

Gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #2 (permalink)  
Antiguo 20/05/2008, 13:34
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Respuesta: Escribir espacios en blanco

¿Cómo lo estas haciendo? ¿Podrías colocar el código en el que haces eso?

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 21/05/2008, 08:49
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Escribir espacios en blanco

Si le paso a la función cualquier otro caracter, por ejemplo "*" me lo concatena bien, pero con el espacio en blanco " " no.

Esta es la función:

char *rellena(char *cadena, int tamano, char relleno[1], int posicion) {
/*
cadena: texto que necesita completar
tamano: tamaño final de 'cadena'
relleno: caracter con el cual se completa la cadena hasta alcanzar el tamaño indicado
posicion: 0=rellena por la izquierda, 1=rellena por la derecha
*/
int resto;
int a=strlen(cadena);
int b=0;
resto = tamano - a;
if (resto>0)
{
char cad_relleno[resto];
char cad_final[tamano];
memset (cad_relleno,'\0',resto);
memset (cad_final,'\0',tamano);
while (b!=resto)
{
sprintf (cad_relleno,"%s%s",cad_relleno,relleno);
b=b+1;
}
if (posicion==0) //izquierda
{
sprintf(cad_final, "%s%s", cad_relleno, cadena);
}
else
{
sprintf(cad_final, "%s%s", cadena, cad_relleno);
}
return cad_final;
}
else
{
return cadena;
}
}
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #4 (permalink)  
Antiguo 21/05/2008, 12:13
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Escribir espacios en blanco

Para el manejo de cadenas, requieres de que el ultimo elemento del array sea '\0' para que no se desborden las varibles y no haga comportamientos raros

Código:
char cad_relleno[resto+1];
char cad_final[tamano+1];
Por lo general prefiero emplear el memset con sizeof si es para limpiar el array

Código:
memset (cad_relleno,'\0',sizeof(cad_relleno));
memset (cad_final,'\0',sizeof(cad_final));
Con esto aseguras que no se desborde el array
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #5 (permalink)  
Antiguo 21/05/2008, 17:38
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Respuesta: Escribir espacios en blanco

¿Por qué no usas la función strcat? Está pensada precisamente en concatenar cadenas de caracteres

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:26.