Programación General > C/C++
Re: gets(cadena) de otra manera
chuidiang:
No se si en el codigo que tienes falta algo, pero los caracteres extraños al final se deben a que falta el de fin de cadena.
Tu array de cadena tiene 40 caracteres sin inicializar y luego vas leyendo hasta el n. El resto siguen sin inicializar. Cuando leas el n debes poner un justo encima o en el caracter siguiente (dependiendo de si quieres o no conservar el n).
char cadena[40];
int i=0;
do
{
cadena[ i ] =getchar();
i++;
}while (cadena[i-1] != 'n');
cadena[i-i] = ''; /*Poner el de fin de cadena */
printf ("%sn", cadena);
Otra opcion es que inicialices la cadena con todo antes de usarla.
Se bueno.
joaquinrg:
Gracias, tiene bastante logica
JuanK:
Con la funcion kbhit puedes hacer tu propio gets, es una funcion muy eficiente porque es de bajo nivel, sin embargo si quieres algor realmente eficiente deberas utilizar assembler..
pregunta..
lo haces porque tienes problemas con linux?
Juank
joaquinrg:
Hola, q tal? Pues mira, estoy en windows, y el problema es el siguiente. Cuando por ejemplo uso gets al principio de un programa no pasa nada:
--- Código: Text --- #include <stdio.h>int main (){ char cadena[30],palabra[10]; printf ("escribe una frase: "); gets(cadena); printf ("escribe una palabra: "); scanf ("%s", &palabra);} Esto funciona.
Pero si necesito usar gets mas abajo en el programa me deja de funcionar y cuando ejecuto el programa es como si se saltara esa intruccion, igual me paso con getchar por ejemplo.... Entonces si pongo esto ya no me funciona.
--- Código: Text --- #include <stdio.h>int main (){ char cadena[30],palabra[10]; printf ("escribe una palabra: "); scanf ("%s", &palabra); printf ("escribe una frase: "); gets(cadena);} Al ejecutar esto me pide la palabra, la escribo, sale lo de escribe un frase y el programa termina, o pasa a la siguiente instruccion... Por que pasa esto? es mi compilador? me falta incluir algo mas en los #includes? Si no lo puedo solucionar... hay otra forma de almacenar frases con espacios?
Gracias
joaquinrg:
Bueno, perdonar, vaya lio el post de arriba, no se que ha pasado pero se ha desordenado todo y no se editarlos en este foro. Los dos codigos primeros son el mismo y me funcionan, el que no funciona es el ultimo. gracias
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa