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

string con espacios en blanco

Estas en el tema de string con espacios en blanco en el foro de C/C++ en Foros del Web. Hola, Necesito en mi programa introducir por teclado un string formado por varios nombres. Quiero que estén en la misma variable. El problema es que ...
  #1 (permalink)  
Antiguo 07/10/2013, 02:40
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
string con espacios en blanco

Hola,

Necesito en mi programa introducir por teclado un string formado por varios nombres. Quiero que estén en la misma variable. El problema es que al incluir un espacio en blanco ' ', ya no guarda el resto d ela info.

Ej:
char names[100];
memset (&names,'*',sizeof(names));
scanf("%s",names);


Si pongo PepeJuanMarta
Pinta PepeJuanMarta

Pero si pongo Pepe Juan Marta
Pinta Pepe*******
******
  #2 (permalink)  
Antiguo 07/10/2013, 07:48
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 4 meses
Puntos: 46
Respuesta: string con espacios en blanco

Esto pasa porque no se usa la función scanf para lo que se debería, la funcion scanf solo se debe usar para números, ya que para otras cosas tiene comportamientos extraños, incluso para números algunas veces también.

La alternativa que se suele dar a scanf() es gets(), pero esta NO hay que usarla, porque puede producir un problema ya que no se mira el numero de caracteres que se esta introduciendo, la función que hay que usar es fgets().

Ejemplo:
Código C:
Ver original
  1. ...
  2. int cadena[50];
  3. fgets(cadena,sizeof(cadena),stdin);
  4. ...
  #3 (permalink)  
Antiguo 08/10/2013, 11:42
 
Fecha de Ingreso: octubre-2012
Mensajes: 33
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: string con espacios en blanco

es porque el scanf lee hasta un espacio en blanco. Podes usar scanf("%^[\n]",names) que leera hasta un salto de linea

Etiquetas: blanco, espacios, int, programa, string
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 09:37.