Programación General > C/C++
Re: gets(cadena) de otra manera
joaquinrg:
Hola , q tal? llevo un rato pensando como puedo conseguir lo mismo que usando gets(cadena) pero sin usar gets. Quiero introducir una cadena con espacios. Lo mas cerca que me he quedao es esto:
char cadena[40];
int i=0;
do
{
cadena[ i ] =getchar();
i++;
}while (cadena[i-1] != 'n');
printf ("%sn", cadena);
pero muchas veces me salen caracteres extraños al final...
Se podria hacer con scanf??
Gracias
Astor:
lo que podrias hacer para evitar caracteres extraños (suponiendo que solo quieras letras y numeros) es filtrar todo lo que no este en el rango ascii que te interesa (con un simple if y no incrementar "i")
Si no podes usar fgets, con stdin como parametro de entrada.
Scanf corta al encontrar un espacio (0x20) con lo cual no cre te sirva.
joaquinrg:
scanf corta cuando se introduce un espacio, pero yo habia pensado en algo como hacer scanf pero con caracteres solo, en vez de con la cadena. Algo asi:
int i;
char cadena[20];
for (i=0; i<20; i++)
scanf ("%c" &cadena[ i ];
Esto tambien guardaria la cadena con espacios,no? O eso no se puede hacer? es que no se porque pero el gets solo funciona si lo pongo arriba del programa, nada maz empezarlo, si lo pongo por abajo se lo salta... Se podria hacer lo de arriba y decirle que pare cuando haya un n?? Gracias
Astor:
No entiendo que es lo que queres hacer.
Si usas scanf %d vas a tener que apretar enter por cada caracter...
joaquinrg:
Es verdad, no habia caido en eso, gracias
Navegación
[#] Página Siguiente
Ir a la versión completa