leer una cadena de caracteres
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?
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?
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.
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.
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
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