Problema al empezar

Iniciado por stev3, 6 Febrero 2014, 19:27 PM

0 Miembros y 1 Visitante están viendo este tema.

stev3

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;
}

ivancea96


fary

system es una función que esta en stdlib.h, incluye esa librería y se acaba el problema.
Un byte a la izquierda.

stev3

Cita de: mDrinky 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.

Joder que retrasado soy pensaba que ya la incluyera xD

stev3

Cita de: 0xefro en  6 Febrero 2014, 19:40 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 (cpp) [Seleccionar]
#include <stdio.h>

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


Saludos

Gracias por el aviso ahora lo cambio ;)

Yoel Alejandro

#5
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


system("dir");


en Windows, mientras:


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 ......
Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)