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

cadena de Texto

Estas en el tema de cadena de Texto en el foro de C/C++ en Foros del Web. Hola amigos un gran saludo tengo una consulta saben que soy un poco novato en lenguaje c, mi pregunta es la siguiente si incluyo por ...
  #1 (permalink)  
Antiguo 11/04/2011, 08:36
 
Fecha de Ingreso: mayo-2008
Mensajes: 16
Antigüedad: 16 años
Puntos: 0
Pregunta cadena de Texto

Hola amigos un gran saludo tengo una consulta saben que soy un poco novato en lenguaje c, mi pregunta es la siguiente si incluyo por ejemplo una cadena de caracteres con el comando printf("Por Favor Incluya Su Nombre y Apellido"); y luego aceptas la instruccion con el comando scanf("%d",&nombre); porque cuando incluyo el nombre y apellido solo me acepta el mismo si es pegado sin espacio por ejemplo: richarjose en cambio si lo coloco de manera correcta como es richar jose, este me brinca un campo de por medio, mi pregunta es cual es el comando que debo colocar para ingresar richar jose ( con espacios intercalados como debe de ser ) Mil gracias por su colaboracion prestada.
  #2 (permalink)  
Antiguo 11/04/2011, 14:58
 
Fecha de Ingreso: abril-2011
Mensajes: 88
Antigüedad: 13 años
Puntos: 24
Respuesta: cadena de Texto

scanf acaba al encontrar el espacio
utiliza fgets()

Código:
printf("Por Favor Incluya Su Nombre y Apellido\n");
char nombre[20];
fgets(nombre, sizeof nombre, stdin);
printf(nombre);
  #3 (permalink)  
Antiguo 11/04/2011, 22:27
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: cadena de Texto

otra manera

Código C:
Ver original
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #define MAX 20
  4. main ()
  5. {
  6. char x[MAX];
  7. printf("Por Favor Incluya Su Nombre y Apellido\n");
  8. gest (x);
  9. printf ("%c",x);
  10. }
  #4 (permalink)  
Antiguo 12/04/2011, 07:35
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 6 meses
Puntos: 9
Respuesta: cadena de Texto

En realidad no es que scanf siempre termine cuando encuentra un espacio en blanco, mas bien, scanf lee la información de la entrada estandar ( el teclado) con cierto formato que TÚ defines.

La forma más común en la que se leen cadenas con scanf es:

Código C:
Ver original
  1. scanf("%s", miCadena);

Hay que tomar en cuenta que las cadenas (arreglos de caracteres o apuntadores de tipo caracter) por si mismas ya son una dirección de memoria, por lo que no necesitan del ampersand a la hora de utilizarlos en scanf.

Volviendo al tema.

Como decía, scanf lee información con el formato que tu le indiques, asi que para que lea espacios y demás puedes hacerlo de la siguiente forma.


Código C:
Ver original
  1. scanf("%[^\n]", miCadena);

Con esto le inficas a scanf que lea TODO exepto el salto de línea.

Espero te sea de ayuda, Salu2

Etiquetas: 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 04:18.