Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: 7emiliosk8 en 14 Febrero 2017, 23:12 PM

Título: system cls o clear
Publicado por: 7emiliosk8 en 14 Febrero 2017, 23:12 PM
Hola tengo una duda, como sé cual función funcionará para windows o linux?  es decir, se supone que `system("cls")` funciona solo en windows, y la `system("clear")` solo en linux, pero como se sabe cual funciona en cual s.o ?, la única manera es probarlo? ejemplo la `system("color")` como se si funciona en linux? donde se puede buscar eso..

gracias de antemano
Título: Re: system cls o clear
Publicado por: engel lex en 14 Febrero 2017, 23:23 PM
El asunto es que "system" es equivalente a abrir una consola y escribir el comando, por eso no se recomienda más que para casos muy necesarios

En lugar de eso puedes imprimir 40 veces "\n" y listo
Título: Re: system cls o clear
Publicado por: MAFUS en 15 Febrero 2017, 11:27 AM
Para saberlo deberás buscar las ordenes de cada shell. Después para usar system puedes usar el #ifdef para saber si se compila para Windows o Linux, en base a eso pones una orden u otra.

O puedes buscar librerías externas para que hagan el mismo trabajo. Mira que sean multiplataforma si vas a compilar para SS.OO. Pero te tocará teclear un poquito màs que tendrás que escribir toda la funcionalidad.
Título: Re: system cls o clear
Publicado por: 7emiliosk8 en 15 Febrero 2017, 19:57 PM
Cita de: MAFUS en 15 Febrero 2017, 11:27 AM
Para saberlo deberás buscar las ordenes de cada shell. Después para usar system puedes usar el #ifdef para saber si se compila para Windows o Linux, en base a eso pones una orden u otra.


Mafus, pero eso no lo entiendo muy bien, o sea se como funciona el ifdef, o sea defino una variable y si esta se encuentra definida se supone que se ejecutara ejemplo

#define PI 3,14

int main()
{
   #ifdef PI

    puts("Casa");
     #enifdef
}


ahi si se ejecutara el puts de casa, pero para que sea windows o linux , te refieres a algo asi ?

int main()

{

#ifdef WINDOWS
//Codigo de Windows
#endif

#ifdef LINUX
//Codigo de Linux
#endif

}


pero el compilador de todos modos como va a saber si es windows o linux :s ? como deberian ser las definiiciones arriba del main ? ,gracias por tu ayuda
Título: Re: system cls o clear
Publicado por: NOB2014 en 15 Febrero 2017, 20:06 PM
Proba con esto ¿a ver si te funciona?

#include <stdlib.h>
#include <stdio.h>

void borrar( void );

int main( void ){
char a[] = "La casa de Bernarda Alba", *b = &a[10];

printf( "\n Programa que muestra como borrar terminal tanto en Linux como Windows.\n\n"
" Presione <Enter> para continuar...." );
getchar();
borrar();
printf("\n %s\n", b);

return 0;
}

void borrar( void ){
system("cls||clear");
}
Saludos.
Título: Re: system cls o clear
Publicado por: MAFUS en 18 Febrero 2017, 00:38 AM
Así es emilio. Aunque las constantes para linux y windows ya están definidas. Comprueba la documentación de tu compilador para saber como las nombra.