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

lesiano

Dúvidas

10 mensagens neste tópico

Boas, algumas dúvidas:

i) Alguém sabe como converto este código para dar em Linux?

           do{
        Ch[i]=getch();
        i++;
                if(Ch[i-1]!='\r') putchar('*');
              }while(Ch[i-1]!='\r');

Isso em windows ñ deixa que se veja nenhum caractere, é para ocultar passwords;

ii) Alguém sabe como posso usar animação de uma maneira mt simples? Usei a técnica do unsleep, mas em Linux ñ funciona.

iii) Alguém sabe onde se muda o encoding do terminal do Linux?

Obg.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

i) Diria que te falta alguma biblioteca

ii) usa usleep -> biblioteca unistd.h  --> Está em micro segundos  (podes meter no terminal man 3 usleep e verificas a biblioteca, etc)

iii) rc.conf ... penso que seja isto que estejas a pedir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

para ler passwords podes usar a função getpass da biblioteca unistd.h que fica bem mais simples!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se não estou em erro o getch() é da bibioteca conio.h que não existe no linux, mas existe uma biblioteca no unix muito idêntica ao conio.h chamada ncurses.h penso que tem a função getch()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Há um ano também quis fazer isso :P  Vê aqui uma forma de fazeres isso...

edit: o aqui tem um link para http://cboard.cprogramming.com/linux-programming/51531-faq-cached-input-mygetch.html

Isto é, o código para uma função "mygetch"

int mygetch() {
  struct termios oldt,
                 newt;
  int            ch;
  tcgetattr( STDIN_FILENO, &oldt );
  newt = oldt;
  newt.c_lflag &= ~( ICANON | ECHO );
  tcsetattr( STDIN_FILENO, TCSANOW, &newt );
  ch = getchar();
  tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
  return ch;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoal, se eu usar

printf(" *");

usleep(5000000);

Ele primeiro faz o usleep e só depois o printf/printfs q estejam antes dele. Alguém sabe pq?

PS: Alguém sabe guardar/ler/escrever ficheiros numa directoria específica?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque o output do printf não é "despejado" logo para o ecrã. Ou metes um \n para ele fazer logo output do texto ou usas a função fflush(stdout).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado!

E já agr:

char * adiciona_directoria (char *string)
{
char *nome = (char*) malloc (100*sizeof(char));
                                          
nome = (char*) strdup ("Cidades/");
int i = 0;
int tam = strlen(nome);

while(string[i]!='\0'){

#64 - no 5x5 diz:
nome[tam]=string[i];
i++;
tam2 += 1;
}

i++;
tam = tam + 1;
nome[tam]='\0';

return nome;
}

A ideia disso era adicionar "Cidades/" no inicio de uma palavra, estou a pensar mal?

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