Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: stev3 en 6 Febrero 2014, 19:27 pm



Título: Problema al empezar
Publicado por: stev3 en 6 Febrero 2014, 19:27 pm
Hoy e decidido empezar con c++ este es el código que cree:

#include <stdio.h>

int main()
{
    printf ("Hola Mundo");
    return 0;
}

El problema es que cuando intento correrlo se me abre y cierra muy rápido.
¿Como puedo solucionarlo?

P.D: Ya probé así y me da error en el system:

#include <stdio.h>

int main()
{
    printf ("Hola Mundo");
    system ("PAUSE");
    return 0;
}


Título: Re: Problema al empezar
Publicado por: ivancea96 en 6 Febrero 2014, 19:29 pm
Qué error?


Título: Re: Problema al empezar
Publicado por: fary en 6 Febrero 2014, 19:36 pm
system es una función que esta en stdlib.h, incluye esa librería y se acaba el problema.


Título: Re: Problema al empezar
Publicado por: stev3 en 6 Febrero 2014, 19:41 pm
system es una función que esta en stdlib.h, incluye esa librería y se acaba el problema.

Joder que retrasado soy pensaba que ya la incluyera xD


Título: Re: Problema al empezar
Publicado por: stev3 en 6 Febrero 2014, 19:42 pm
Lo recomendable seria no usar la funcion system, ademas de depender del sistema, también hará que tu programa tenga futuros errores "tontos" por decirlo de alguna forma, y eso dará lugar a vulnerabilidades inesperadas.

En vez de usar system("pause");   usa getchar();  de la libreria stdio.h  o fstream si usas C++

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    printf ("Hola Mundo");
  6.    getchar();
  7.    return 0;
  8. }

Saludos

Gracias por el aviso ahora lo cambio ;)


Título: Re: Problema al empezar
Publicado por: Yoel Alejandro en 7 Febrero 2014, 01:42 am
Sí, efectivamente la función system() está incluida en la biblioteca <stdlib.h>, que es la biblioteca de utilerías generales de C.

Con el tiempo terminarás memorizando cuáles funciones van con cuáles bibliotecas. En general se requieren mínimo dos: <stdlib.h> y <stdio.h>. La primera contiene a system(), además de otras importantes como malloc(), calloc(), realloc(), y free(). La segunda es para "input-output", es decir maneja las funciones de entrada/salida. Contiene printf(), scanf(), read(), write(), etc.
Otras bibliotecas importantes son <string.h> para cadenas, <time.h> para manejar fecha y hora y <math.h> para funciones matemáticas. Esto por mencionar algunas.

Ahora, en cuanto a system() considera que esta función lo que hace es pasar su cadena argumento al procesador de comandos del Sistema Operativo, como lo es cmd en caso de Windows, o bash en caso de Linux. Es como si escribieras ese comando en la consola, pues. Esto significa que el comportamiento de la función será absolutamente dependiente del sistema operativo, y por supuesto las sentencias de uno pueden no funcionar en el otro. Por ejemplo, si quieres listas los ficheros dentro del directorio actual debes escribir

Código:
system("dir");

en Windows, mientras:

Código:
system("ls");

en Linux y sistemas UNIX. Por eso no se recomienda system, ya que hará el programa no portable.

Si lo que quieres es una simple pausa usa, como te han recomendado, la función estándar getchar() de <stdio.h>.

Ojo, que no es getch(), ni tampoco getche(), !!!!!!

La razón por la que se haya tan difundido el bendito system("pause") es que muchos profesores y academias no enseñan el "verdadero" C, normado por los comités ANSI e ISO/IEC, sino la versión de C de Borland, o la de Microsoft Visual C++ que no son estándares oficiales sino versiones COMERCIALES de ciertas compañías.

Pero se tú un buen estudiante, y aprende el C "académico", o sea el verdadero y hazlo así desde el principio  ;)

..... Yoel ......