Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Fer995 en 28 Octubre 2010, 20:03 pm



Título: leer frase con scanf
Publicado por: Fer995 en 28 Octubre 2010, 20:03 pm
como puedo hacer para leer una frase introducida en la consola??

probe con scanf pero solo lee hasta cuando hay un espacio!

muchas gracias!


Título: Re: leer frase
Publicado por: ace332 en 28 Octubre 2010, 20:55 pm
Utiliza fgets:

Código:
char cadena[100];
fgets(cadena,100,stdin);

Revisa la documentación (http://c.conclase.net/librerias/?ansifun=fgets) de la función fgets.

Un Saludo


Título: Re: leer frase
Publicado por: Fer995 en 28 Octubre 2010, 23:32 pm
muchas gracias!

no hay ningun modo de hacerlo con scanf??


Título: Re: leer frase
Publicado por: klaussius en 29 Octubre 2010, 00:15 am
muchas gracias!

no hay ningun modo de hacerlo con scanf??

No, no hay manera de hacerlo así, debes utilizar la biblioteca <string.h>... te dejo un trozo de código que me he encontrado por ahí:

Código:
#include <stdio.h>
#include <string.h>

char completo [80];

char nombre[32] = "Guybrush";
char apellidos [32] = "Threep Wood";

int main(void)
{
  /* Construye el nombre completo */
  strcpy ( completo, nombre );
  strcat ( completo, " ");  
  strcat ( completo, apellidos );

  /* Muestro el nombre al usuario */ 
  printf ( "El nombre completo es %s\n", completo );

  /* Pausa hasta que el usuario pulse INTRO */
  fflush(stdin);
  printf ("Pulse INTRO para finalizar...");
  getchar();
}


Título: Re: leer frase
Publicado por: taul en 29 Octubre 2010, 23:31 pm
char frase[1000];

printf("introduce tu frase: ");
scanf("%s",frase);


Título: Re: leer frase
Publicado por: xassiz~ en 29 Octubre 2010, 23:34 pm
char frase[1000];

printf("introduce tu frase: ");
scanf("%s",frase);
Incorrecto, os recomiendo que leais esto (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

Saludos !


Título: Re: leer frase
Publicado por: Darioxhcx en 29 Octubre 2010, 23:50 pm
para no poner una palabra x una yo hago esto
Código:
#include <stdio.h>
#include <string.h>
main () {
     char frase[100];
     int x,y;
     printf("escribi tu frase: ");
     gets(frase);
     y=strlen(frase)-1;
     for (x=0;x<=y;x++){
         printf("%c",frase[x]);
         }
         getchar();
         }
no se si esta bien o estoy pasando por alto algunos tips como los que escribio litle hace tiempo , pero buee :P


Título: Re: leer frase
Publicado por: Fer995 en 30 Octubre 2010, 01:25 am
gracias por vuestras respuestas me han dado algunas ideas!


Título: Re: leer frase
Publicado por: 3mp3z@ndo en 30 Octubre 2010, 02:49 am
También podrías hacerlo de esta forma:
Código:
#include <stdio.h>

int main(){

  char frase[100];
  printf( "Escribe una frase:\n");
  printf( "\nHas escrito: \%s\n", gets(frase) );
 
  getch();
  return 0;
}

Saludos


Título: Re: leer frase
Publicado por: Fer995 en 30 Octubre 2010, 03:01 am
También podrías hacerlo de esta forma:
Código:
#include <stdio.h>

int main(){

  char frase[100];
  printf( "Escribe una frase:\n");
  printf( "\nHas escrito: [b]\[/b]%s\n", gets(frase) );
 
  getch();
  return 0;
}

Saludos

que es lo que hace la barra delante del %s??


Título: Re: leer frase
Publicado por: 3mp3z@ndo en 30 Octubre 2010, 03:09 am
En realidad no hace nada  :P, te habia puesto un ejemplo imprimiendo la frase introducida entre comillas así:

Código:
printf( "\nHas escrito: \"%s\"\n", gets(frase) );

pero luego pensé que no era necesario y lo he modificado pero se me ha colado la barra al eliminar las comillas

Saludos


Título: Re: leer frase
Publicado por: taul en 30 Octubre 2010, 05:33 am
Incorrecto, os recomiendo que leais esto (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

Saludos !

el pibe pregunto como hacerlo con scanf y yo le respondi el code esta bien..y yo te recomiendo leer la pregunta del usuario y un manual de C.

(esta bien escrito)


Título: Re: leer frase
Publicado por: Littlehorse en 30 Octubre 2010, 16:14 pm
Incorrecto, os recomiendo que leais esto (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

Saludos !

el pibe pregunto como hacerlo con scanf y yo le respondi el code esta bien..y yo te recomiendo leer la pregunta del usuario y un manual de C.

(esta bien escrito)

Taul, vos tampoco leíste bien la pregunta del usuario, si te fijas quiere saber como leer mas de una palabra ya que scanf lee hasta encontrar un espacio. Tu codigo tiene exactamente el mismo problema.


@Fer995

No uses getch ya que es una función de un header obsoleto, ni fflush con stdin ya que produce comportamiento indefinido.
Tampoco utilices gets, ya que es propensa a errores debido a que no podes especificar el tamaño del buffer a leer.

Si queres hacerlo con scanf, podes hacer algo así:

Código
  1. char cad[1000];
  2. scanf("%[^\n]", cad);

Pero mi recomendación es que utilices fgets con stdin del modo que te menciono Beetle Juice. Dale una leida a las chinchetas y a los links que te recomendaron.

Saludos!


Título: Re: leer frase
Publicado por: Fer995 en 30 Octubre 2010, 16:23 pm
gracias de nuevo por las respuestas!


Título: Re: leer frase con scanf
Publicado por: MG2010 en 30 Octubre 2010, 16:59 pm
En c++ es muy simple:

Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace::std;
  4.  
  5. int main (){
  6.  
  7. string frase;
  8. cin >> frase;
  9. cout << "Tu frase fue: " << frase << endl;
  10. return 0;
  11.                 }


Título: Re: leer frase con scanf
Publicado por: Horricreu en 30 Octubre 2010, 17:15 pm
MG2010 te falta poner una almohadilla.


Título: Re: leer frase con scanf
Publicado por: Qorin en 14 Noviembre 2010, 16:02 pm
En cualquier ingeniería no te dejarán usar la función gets durante el enseñamiento...así que otra opción es usar un do-while y un vector