Jump to content
JoBlack

[Resolvido] Função clrscr()

Recommended Posts

JoBlack

Olá a todos

Estou aqui com um prob pois coloquei a função clrscr() num prog, coloquei o #include <conio.h> no início mas, mesmo assim, dá-me o erro 

'[Linker error] undefined reference to 'clrscr'  ''

O que se passará??

Nota: estou a porg com o Dev-C++

Share this post


Link to post
Share on other sites
mogers

system("cls"); sera uma bao solucao...e pelo que sei ja tinhas resolvido o problema, usando isto...

pessoal, system("cls"); tb funciona bem em linux, nao funciona?  so para confirmar...  :)

Não ! Em Linux é  system("clear");  daí que não conseguimos assegurar a portabilidade do programa a menos que coloquemos umas flags de pré-compilação para escolher a função a fazer, mediante o sistema operativo.

cumps


"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Share this post


Link to post
Share on other sites
UnKnowN

system("cls"); sera uma bao solucao...e pelo que sei ja tinhas resolvido o problema, usando isto...

pessoal, system("cls"); tb funciona bem em linux, nao funciona?  so para confirmar...  :)

Não ! Em Linux é  system("clear"); daí que não conseguimos assegurar a portabilidade do programa a menos que coloquemos umas flags de pré-compilação para escolher a função a fazer, mediante o sistema operativo.

cumps

Esse "Não !" escusava de ser tao agressivo, afinal estás a falar com uma minina :)

Share this post


Link to post
Share on other sites
saramgsilva

system("cls"); sera uma bao solucao...e pelo que sei ja tinhas resolvido o problema, usando isto...

pessoal, system("cls"); tb funciona bem em linux, nao funciona?  so para confirmar...  :)

Não ! Em Linux é  system("clear");  daí que não conseguimos assegurar a portabilidade do programa a menos que coloquemos umas flags de pré-compilação para escolher a função a fazer, mediante o sistema operativo.

cumps

Esse "Não !" escusava de ser tao agressivo, afinal estás a falar com uma minina :)

😲  agressivo? nao precebi onde...por achei... mas nao interessa...

e dai ...de ser menina... ou menino?  :dontgetit: ... deixemo nos de off topic... k isso nao interessa...

Entao pelo k percebi

system("cls"); para  windows

system("clear")  para linux

Share this post


Link to post
Share on other sites
mogers

printf("\033[2J"); em unix ou windows.

Tive a experimentar mas nao funcionou.. por acaso não houve algum engano?


"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Share this post


Link to post
Share on other sites
reiz

falta-t incluires uma biblioteca que agora nao m lembro o nome para o clrscr funcionar... acho que nao é a conio.h pode ser a win.h

Share this post


Link to post
Share on other sites
vbtipo

Se não me engano acho que tens que utilizar a biblioteca:

#include <stdio.h>


Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Share this post


Link to post
Share on other sites
redhat

printf("\033[2J"); em unix ou windows.

divinal! nunca percebi o que esse codigo realmente faz mas eh magnifico!!

quanto ao system("clear") e' manhoso, pois se fizeres scroll para cima o texto ta la todo ^^ (pelo menos era o que me acontecia)


Software is like sex... it's better when it's free

in the old days

P@P "C" && "Linux" Moderator

Share this post


Link to post
Share on other sites
mogers

redhat.. mas funciona essa instrucção? comigo nao limpa o ecra  :bored:

(em windows)


"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Share this post


Link to post
Share on other sites
untouchables

se não me engano, o clrscr() não passa de um printf de um monte de "\n"? se assim for, podes simplesmente fazer isso :)

Share this post


Link to post
Share on other sites
yoximut

que me lembre, no devC++ nao funciona esse clrscr()  -  pelo menos com os includes +- "habituais",lol, a forma + simples é msm u system("cls");

Share this post


Link to post
Share on other sites
redhat

sim mogers funciona!! mas eu nao uso Windows para programar ja' 'a algum tempo! todo o meu code e' feito em MacOSX =)

agr, para limpar a consola em *nix e' de facto o comando clear, e para windows e' cls! penso que o system(cls); funciona para windows assim como o system(clear); funciona para *nix.

a ideia de fazer uma funcao 'a parte que limpe o ecra com \n e' boa, mas a partir do momento que se redimensiona o tamanho da janela, ja' nao pode ser usada, e uma funcao universal seria o ideal!

abraços


Software is like sex... it's better when it's free

in the old days

P@P "C" && "Linux" Moderator

Share this post


Link to post
Share on other sites
entering

no Dev-C++ a função clrscr não funciona, alias é estupido referir isto

o Dev-C++ é um IDE que usa o compilador gcc

a função clrscr é uma função 'non-standard' por isso deve ser evitado o seu uso, pois grande parte dos compiladores não a suportam, o mais conheçido que a suporta é o borland-c

#include <stdio.h>
#include <conio.h>

int main (void) {
  clrscr();
  return 0;   
}

5 C:\Documents and Settings\Eduardo\Ambiente de trabalho\teste.c [Warning] implicit declaration of function `clrscr'

  [Linker error] undefined reference to `clrscr'

Isto em Windows quanto a Unix

$ uname

FreeBSD

$ gcc -Wall teste.c

teste.c: In function `main':

teste.c:4: warning: implicit declaration of function `clrscr'

/var/tmp//ccxrWrov.o(.text+0x1d): In function `main':

: undefined reference to `clrscr'

Quanto ao system(cls) e system(clear), chega a tocar o ridiculo

Para ja a função system nao existe para andar a 'apagar ecras' nem nada do genero, existe para um 'general purpose' -> passar 'strings' a linha de comandos.

É uma função standard, definida na libraria stdlib.h cuja sintaxe é

int system(const char *string);

Basicamente é passado um parametro e retorna 0 em caso de sucesso

Ex:

#include <stdio.h>
#include <stdlib.h>
#define MAXS 100

int main (void) {
  char string[MAXS];
  printf ("Comando: ");
  fgets (string,MAXS,stdin);
  if (system (string)) {
    fprintf (stderr,"\nErro - ...\n");
    exit (EXIT_FAILURE);
  }
  return 0;
}

$ gcc -Wall teste.c

$ ./a.out

Comando: whereis gcc

gcc: /usr/bin/gcc /usr/share/man/man1/gcc.1.gz

redhat

system(clear) não funcionaria visto que strings tem que estar entre "" não?

$ cat teste.c

#include <stdio.h>

#include <stdlib.h>

int main (void) {

  system (clear);

  return 0;

}

$ gcc -Wall teste.c

teste.c: In function `main':

teste.c:5: error: `clear' undeclared (first use in this function)

teste.c:5: error: (Each undeclared identifier is reported only once

teste.c:5: error: for each function it appears in.)

ou seja teria que ser algo do genero system ("clear");

mas sera que se deve usar um system apenas para limpar o ecra?!

em unix existem alguns escape codes e com um simples printf podemos fazer coisas engraçadas desde limpar ecras mover o cursor para onde queremos ate usar cores (isto das cores já foi referenciado neste forum por algum user [nao me lembro do nick] e deu o exemplo de azul).

printf ("\e[2J\e[H"); // limpa o ecra (unix)

printf("\033[34mAZUL\033[0m\n"); // cores

em windows nao é possivel limpar o ecra desta maneira, no entanto alguns compiladores de c para windows dispoe de funçoes proprias (non-standard) para resolver o problema, senao estou em erro o clrscr existe no borland-c, deverao procurar a soluçao na net conforme o vosso compilador.

Share this post


Link to post
Share on other sites
Knitter

A função conio.h é uma função proprietária da Borland pelo que no DevC++ não vai existir, podem procurar bibliotecas com implementações alternativas, e assim o código torna-se fácilmente portável. Existem implementações alternativas a essas bibliotecas, se não me engano o DevC++ trás uma mas não me lembro do nome, já lá vai o tempo.

Sei que o tópico está um pouco morto, mas na leitura diagonal que fiz não encontri nenhuma referencia a este facto. Já agora fazer chamadas ao sistema não deve ser usado, por exemplo, nada garante que o windows vista tenha qualquer suporte para esse tipo de função.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.