Foro de elhacker.net

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

Código
  1. #define PI 3,14
  2.  
  3. int main()
  4. {
  5.    #ifdef PI
  6.  
  7.     puts("Casa");
  8.      #enifdef
  9. }

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

Código
  1. int main()
  2.  
  3. {
  4.  
  5. #ifdef WINDOWS
  6. //Codigo de Windows
  7. #endif
  8.  
  9. #ifdef LINUX
  10. //Codigo de Linux
  11. #endif
  12.  
  13. }

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?

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. void borrar( void );
  5.  
  6. int main( void ){
  7. char a[] = "La casa de Bernarda Alba", *b = &a[10];
  8.  
  9. printf( "\n Programa que muestra como borrar terminal tanto en Linux como Windows.\n\n"
  10. " Presione <Enter> para continuar...." );
  11. borrar();
  12. printf("\n %s\n", b);
  13.  
  14. return 0;
  15. }
  16.  
  17. void borrar( void ){
  18. system("cls||clear");
  19. }
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.