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

Problema con cadena de caracteres

Estas en el tema de Problema con cadena de caracteres en el foro de C/C++ en Foros del Web. Hola a todos =) tengo un problemin con un programa xD de hecho el programa que quiero hacer es mas extenso, pero el problema lo ...
  #1 (permalink)  
Antiguo 01/07/2011, 20:33
Avatar de halexander  
Fecha de Ingreso: abril-2010
Ubicación: En algun lugar de mexico xD
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
Pregunta Problema con cadena de caracteres

Hola a todos =) tengo un problemin con un programa xD de hecho el programa que quiero hacer es mas extenso, pero el problema lo tengo apenas en el inicio jijiji, sucede que quiero meter un numero binario, luego lo valido que solo sean unos y ceros, perooo despues de que metan el numero binario quiero invertir la cadena, lo cual el programa que les muestro aki si lo hace, pero aveces si meto mas carcteres al final de la cadena me imprime basura =S tienen alguna idea de a que se deba?? =S

De antemano muchas gracias por tomarse su tiempo =)


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

main()
{
char array[30], array2[30];//array.-arreglo principal //array2.-aki se invertira la cadena
int lng,i,j=0,suma=0;//lng=longitud arreglo, i=contador,j=contador

printf("introduce un numero binario: ");
gets(array);

lng=strlen(array);
j=lng-1;//aki 'j' tendra el valor de la longitud de la cadena-1

for(i=0;i<lng;i++)
{
array2[j]=array[i];//invierto la cadena en el arreglo 2
printf("%c.%c ",array2[j],array[i]);//imprimo caracter x caracter.
j--;
}
printf("\n%s.%s",array,array2);//imprimo la cadena
}
  #2 (permalink)  
Antiguo 01/07/2011, 23:31
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Problema con cadena de caracteres

En la forma que lo haces no llegas a poner a array2 el caracter de termino ('\0') que le indica al programa donde termina array2, es por ello que cuando lo imprimes, imprime hasta donde logra encontrar '\0'. Una posible solución que hallo basado en tu implementación es la siguiente:
Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. int main()
  7. {
  8.   char array[30], array2[30];//array.-arreglo principal //array2.-aki se invertira la cadena
  9.   int lng,i,suma=0;//lng=longitud arreglo, i=contador,j=contador
  10.  
  11.   printf("introduce un numero binario: ");
  12.   gets(array);
  13.  
  14.   lng=strlen(array);
  15.    
  16.   for(i=0;i<lng;i++)
  17.   {
  18.     array2[i]=array[lng-1-i]
  19.   }
  20.   array2[lng]='\0';
  21.   printf("\n%s\n%s\n",array,array2);//imprimo la cadena
  22.   system("PAUSE");
  23.   return 0;
  24. }

Este código sirve si tu arreglo array no sobrepasa de los 30 caracteres.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #3 (permalink)  
Antiguo 01/07/2011, 23:34
Avatar de halexander  
Fecha de Ingreso: abril-2010
Ubicación: En algun lugar de mexico xD
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con cadena de caracteres

Cita:
Iniciado por CapacProg Ver Mensaje
En la forma que lo haces no llegas a poner a array2 el caracter de termino ('\0') que le indica al programa donde termina array2, es por ello que cuando lo imprimes imprime hasta donde logra encontrar '\0', la posible solución que hallo basado en tu implementación es:
Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. int main()
  7. {
  8.   char array[30], array2[30];//array.-arreglo principal //array2.-aki se invertira la cadena
  9.   int lng,i,suma=0;//lng=longitud arreglo, i=contador,j=contador
  10.  
  11.   printf("introduce un numero binario: ");
  12.   gets(array);
  13.  
  14.   lng=strlen(array);
  15.    
  16.   for(i=0;i<lng;i++)
  17.   {
  18.     array2[i]=array[lng-1-i]
  19.   }
  20.   array2[lng]='\0';
  21.   printf("\n%s\n%s\n",array,array2);//imprimo la cadena
  22.   system("PAUSE");
  23.   return 0;
  24. }

Este código sirve si tu arreglo array no sobrepasa de los 30 caracteres.

=o es cierto capac¡¡ xD tienes toda la razon del mundo xD olvide ese detalle del nulo \0... muchas gracias =) ya con esa ayuda resuelvo mi problema =) muchisimimas gracias¡¡¡ =D
  #4 (permalink)  
Antiguo 01/07/2011, 23:36
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Problema con cadena de caracteres

Ok no hay problema. Y no olvides calificar con karma positivo
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #5 (permalink)  
Antiguo 02/07/2011, 04:31
Avatar de halexander  
Fecha de Ingreso: abril-2010
Ubicación: En algun lugar de mexico xD
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con cadena de caracteres

Cita:
Iniciado por CapacProg Ver Mensaje
Ok no hay problema. Y no olvides calificar con karma positivo
OK creo que ya califique xD para que es eso del karma?? jejeje

Etiquetas: binario, contador, invertir, cadenas
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 22:13.