como puedo hacer para leer una frase introducida en la consola??
probe con scanf pero solo lee hasta cuando hay un espacio!
muchas gracias!
Utiliza fgets:
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
muchas gracias!
no hay ningun modo de hacerlo con scanf??
Cita de: Fer995 en 28 Octubre 2010, 23:32 PM
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í:
#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();
}
char frase[1000];
printf("introduce tu frase: ");
scanf("%s",frase);
Cita de: taul en 29 Octubre 2010, 23:31 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 !
para no poner una palabra x una yo hago esto
#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
gracias por vuestras respuestas me han dado algunas ideas!
También podrías hacerlo de esta forma:
#include <stdio.h>
int main(){
char frase[100];
printf( "Escribe una frase:\n");
printf( "\nHas escrito: \%s\n", gets(frase) );
getch();
return 0;
}
Saludos
Cita de: 3mp3z@ndo en 30 Octubre 2010, 02:49 AM
También podrías hacerlo de esta forma:
#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??
En realidad no hace nada :P, te habia puesto un ejemplo imprimiendo la frase introducida entre comillas así:
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
Cita de: pablomi en 29 Octubre 2010, 23:34 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)
Cita de: taul en 30 Octubre 2010, 05:33 AM
Cita de: pablomi en 29 Octubre 2010, 23:34 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í:
char cad[1000];
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!
gracias de nuevo por las respuestas!
En c++ es muy simple:
#include <iostream>
#include <string>
using namespace::std;
int main (){
string frase;
cin >> frase;
cout << "Tu frase fue: " << frase << endl;
return 0;
}
MG2010 te falta poner una almohadilla.
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