• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JoBlack

[Resolvido] Função clrscr()

17 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

#include <stdio.h>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

(em windows)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora