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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda!!! Problema con cadena de caracteres
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda!!! Problema con cadena de caracteres  (Leído 3,649 veces)
mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Ayuda!!! Problema con cadena de caracteres
« en: 26 Junio 2013, 16:30 pm »

Buenas que tal!!!
Les cuento realize un codigo para poder ingresar algunos datos pero cuando ingreso algo que tenga dos palabras separadas por un espacio solo me toma la primera, es decir no me toma el espacio como caracter. Necesito si me pueden ayudar a corregir el codigo, y asi poder imprimir dos palabras por un espacio.

Desde ya muchas gracias!


Código
  1. #include <stdio.h>
  2. #define tam_string 20
  3.  
  4. main()
  5. {
  6. char arre[tam_string];
  7. int t;
  8.  
  9. for (t=0; t<=tam_string; t++)
  10.    {
  11.     arre[t]=32;
  12.    }
  13.  
  14. printf("ingrese: ");
  15. scanf("%s",arre);
  16.  
  17.    for(t=0; t<tam_string; t++)
  18.        {
  19.         printf("%c",arre[t]);
  20.        }
  21.  
  22. }


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda!!! Problema con cadena de caracteres
« Respuesta #1 en: 26 Junio 2013, 16:54 pm »

Mira esto:

http://gpraveenkumar.wordpress.com/2009/06/10/how-to-use-scanf-to-read-string-with-space/

Dulces Lunas!¡.


En línea

The Dark Shadow is my passion.
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Ayuda!!! Problema con cadena de caracteres
« Respuesta #2 en: 26 Junio 2013, 16:58 pm »

la función scanf con el parámetro %s lee una cadena hasta que encuentra un hueco.

Se entiende por hueco un tabulador, un espacio en blanco, un salto de línea, ...

Una opción sería cambiar el argumento de scanf por otro tal que...

Código
  1. scanf("%19[^\n]", arre);

Con esto indicas que scanf recupere todos los caracteres que encuentre hasta que tope con un salto de línea o alcance el límite de 19 caracteres... recuerda que la última posición del array has de reservarla para el caracter nulo.

La solución que proponen arriba es igualmente válida pero ahí no se comprueba el tamaño del buffer... con lo que podrías tener problemas si al que prueba tu programa le da por meter un título de longitud superior a 19 caracteres.

Si quieres mas control sobre lo que estás copiando podrías mirar otras funciones, como fgets.

Un saludo.
« Última modificación: 26 Junio 2013, 17:41 pm por eferion » En línea

mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: Ayuda!!! Problema con cadena de caracteres
« Respuesta #3 en: 26 Junio 2013, 18:48 pm »

Muchas gracias por su pronta ayuda, ahora tengo lo siguiente, en el codigo que detallo a continuacion me deja ingresar el nombre pero no la cedula, alguien sabe porque es?

Saludos

Código
  1. #include <stdio.h>
  2. #define tam_string 20
  3. #define ced_string 22
  4. main()
  5. {
  6. char arre[tam_string];
  7. char arreglo[ced_string];
  8. int t=0,j=0;
  9.  
  10.  
  11. for (t=0; t<=tam_string; t++)
  12.     {
  13.     arre[t]=' ';
  14.     }
  15.        printf("Ingrese Nombre: ");
  16.     scanf("%19[^\n]", arre);
  17.     printf("Nombre ingresado: ");
  18.     for (t=0;t<tam_string;t++)
  19.     {
  20.     printf("%c",arre[t]);
  21.     }
  22.  
  23.  
  24.     printf("\n");
  25.  
  26.  
  27.  
  28.     for (j=0; j<=ced_string; j++)
  29.     {
  30.     arreglo[j]=' ';
  31.     }
  32.     printf("Ingrese su cedula: ");
  33.     scanf("%21[^\n]", arreglo);
  34.     printf("Cedula ingresada: ");
  35.     for (j=0;j<ced_string;j++)
  36.     {
  37.     printf("%c",arreglo[j]);
  38.     }
  39. }
En línea

ecfisa

Desconectado Desconectado

Mensajes: 114


Ver Perfil
Re: Ayuda!!! Problema con cadena de caracteres
« Respuesta #4 en: 26 Junio 2013, 19:38 pm »

Hola.

Agrega la siguiente línea a tu código:
Código
  1.    ...
  2.    printf("Nombre ingresado: ");
  3.    for (t=0;t<tam_string;t++)
  4.    {
  5.    printf("%c",arre[t]);
  6.    }
  7.  
  8.    printf("\n");
  9.  
  10.    while(getchar() != '\n'); // <------ aqui
  11.    ...
  12.  

Saludos :)
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda!!! Problema con cadena de caracteres
« Respuesta #5 en: 26 Junio 2013, 19:47 pm »

O  aún más sencillo en este caso, deja un espacio delante del segundo scanf:

Código
  1. scanf(" %21[^\n]", arreglo);

Por cierto, ¿te has fijado que inicializas hasta el último caracter con espacio vacío y no dejas "sitio" al final de cadena "\0"?.

¿Y por qué imprimes caracter a caracter en lugar de imprimir la cadena completa?. Algo como:


Código
  1. printf("%s",arre);

 Saluditos!
   
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA URGENTE!!!!!!!!! Suma de Cadena de Caracteres o palabras
Ejercicios
pcvsoft 6 14,095 Último mensaje 4 Enero 2008, 18:56 pm
por BeatLord
Ayuda para descifrar cadena de 16 caracteres
Criptografía
th3r0rn 9 10,711 Último mensaje 29 Abril 2011, 13:35 pm
por APOKLIPTICO
Ayuda - Saber si se repiten caracteres en una misma cadena
Programación C/C++
Miky Gonzalez 2 22,627 Último mensaje 4 Julio 2012, 14:07 pm
por Miky Gonzalez
cadena de caracteres
Programación C/C++
Ander123 1 2,347 Último mensaje 6 Septiembre 2012, 14:15 pm
por avesudra
[ayuda] convertir una cadena de caracteres en un array
Programación C/C++
jet1994 8 4,923 Último mensaje 26 Septiembre 2012, 14:57 pm
por fary
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines