elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado] Forma para pausar un programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] Forma para pausar un programa  (Leído 7,177 veces)
Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Forma para pausar un programa
« Respuesta #10 en: 27 Septiembre 2012, 22:00 pm »

Lo acabo de compilar y funciona perfectamente, duda resuelta. Muchísimas gracias.

Saludos.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Forma para pausar un programa
« Respuesta #11 en: 28 Septiembre 2012, 02:12 am »

Dos comentarios en relaciona los programas de leosansan:

1) Se debe evitar el uso de la función "gets", el porque se explica en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

2) Es un error utilizar la función "scanf" en esta forma:
Código
  1. scanf("%s%c", cadena);
Ya que la cadena de formato "%s%c" indica que el carácter sera almacenado en la dirección en memoria indicada por el tercer argumento, el problema es que este no existe. En su lugar se debe pasar una dirección de memoria valida o bien utilizar "%*c" para indicar que el carácter sera descartado.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
-r3-

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Re: [Solucionado] Forma para pausar un programa
« Respuesta #12 en: 28 Septiembre 2012, 16:52 pm »

Creo que el tema ya ha sido solucionado, pero tengo una pregunta, quizás yo esté mal, recién empiezo con C.

En la parte del for(i = 0; cadena != '\0'; ++i);
Por qué pones el punto y coma al final? Según mi libro al final del -for- no debería ir eso.
Código:
#include <stdio.h>

main()
{
int i;
char cadena[80];

scanf("%s", cadena);

for(i = 0; cadena[i] != '\0'; ++i)
printf("Cadena contiene %d caracteres\n", i);

getch();

return 0;
}

Yo lo hice así, lo compilé con gcc para windows y funciona, al final del programa se pausa, aplasto una tecla y finaliza...
En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: [Solucionado] Forma para pausar un programa
« Respuesta #13 en: 28 Septiembre 2012, 17:21 pm »

Citar
Creo que no te has fijado bien en el punto y coma ";" después del while. Este es el que "obliga" al programa a esperar el ENTER para cerrar.

:huh:

el ";" no es para nada mas que para acabar el bloque del while sin ninguna sentencia dentro de el.

Código
  1. while(getchar()!='\n');

esto se hace para limpiar el bufer de entrada stdin. se ha comentado muchas veces en el foro pero lo repetire una vez mas. funciones como scanf() dejan basura en el bufer de entrada. si lo usas para leer un entero, e introduces por ejemplo "23ab", scanf() leera el "23" y el "ab\n" se quedara en el bufer de entrada. usando esta sentencia del while, limpias el bufer ya que descarta los caracteres hasta encontrarse el de salto de linea, el cual tambien lo descarta. asi luego puedes usar otras funciones como fgets() sin problemas.

Citar
En la parte del for(i = 0; cadena != '\0'; ++i);
Por qué pones el punto y coma al final? Según mi libro al final del -for- no debería ir eso.

es el mismo caso que antes. cuando el for tiene sentencias dentro de el se usan "{}", en cambio si no tiene ninguna sentencia dentro tienes que indicar de alguna manera que el for se acaba, y se hace con ";". de hecho, tambien podrias hacerlo asi:

Código
  1. for(i=0; cadena!='\0'; i++){}

o incluso asi:

Código
  1. for(i=0; cadena!='\0'; i++){};

y todas funcionarian.

un saludo!
En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: [Solucionado] Forma para pausar un programa
« Respuesta #14 en: 28 Septiembre 2012, 23:17 pm »

Añado algo:

Es recomendable usar esto:

Código
  1. while (getchar()!='\n')
  2.        ;
  3.  

Despues de cada scanf para limpiar siempre el bufer.

Aunque para evitart tener que cargar mucho el codigo de esto, es mejor aprender a utilizar otras funciones como por ejemplo: fgets().

Saludos
« Última modificación: 28 Septiembre 2012, 23:21 pm por Caster » En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines