leer una cadena de caracteres

aiel
28 de Agosto del 2003
tengo un problema.

estoy recien arrancando en c y me surgio un inconveniente:

lo que quiero hacer yo es:
pedir que se ingrese un codigo y luego pedir ingresar un nombre y apellido.

el problema es este.
yo leo el codigo(integer) con scanf y luego si quiero leer el nombre y apellido (todo en un string) con "gets" el programa sigue de largo y lo ignora. y si lo leo con "scanf" lo toma, pero en la variable solo graba hasta el primer espacio y yo quiero ingresar nombre y apellido en la variable (ej: ariel lopez, todo en una variable).

que puedo hacer?

chuidiang
28 de Agosto del 2003
scanf() solo lee hasta espacio, tabulador o demas. Con el no puedes leer dos palabras de un solo golpe, salvo que lo pongas en el formato

scanf ("%s %s", nombre, apellido);

Utiliza solo gets(), tanto para el numero como para el nombre. gets() lee una linea completa.

Una vez que obtienes la linea con el numero entero, lo puedes convertir a entero con la funcion atoi()

entero = atoi (linea_leida);

Luego, con otro gets() lees nombre y apellido. El usuario debe escribir el numero en una linea distinta que el nombre y apellido.

Se bueno.

ana
28 de Agosto del 2003
Lo que te dice chuidiang es verdad,
scanf("%s",nombre); te coge la cadena hasta el primer espacio que se encuentra.
Es mejor que uses gets(nombre); //si dices que no te lo coge y va de largo, quizas te falte un fflush(stdin);
ejemplo::
char nombre[80];
printf("Introduce codigo");
scanf("%d",&codigo);
printf("Introduce nombre y apellidos");
gets(nombre);
fflush(stdin);
Espero que te sirva
Un saludo