Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. #1
    adrianoviana
    Eaih galera...Como eh q fço pra esvaziah o buffer da função scanf?
    Eh o seguinte...vou mostra um exemplo:
    #include <stdio.h>
    void visualizar();
    void adicionar();
    void main() {
    char ch;
    puts("o q vc quer fazer?");
    puts("(a)dicionar um bareco");
    puts("(v)izualizar um bareco");
    scanf("%c",&ch);
    switch(ch) {
    case 'a': adicionar();
    break;
    case 'v': visualizar();
    break;
    default: break;
    }
    }

    na função adicionar tem um printf() e depois pede para o usuario entrar com uma string e depois apertar ENTER. Aí q tá o problema. Parece q quando eu aperto ENTER no menu da função main(), ele parece q fica num buffer. Ele envia o ENTER direto para a função adicionar() fazendo com q o usuário não possa digitar a string(pois o gets da função adicionar() ja recebeu o ENTER.
    Como q eu faço pra este ENTER não ser enviado para o gets() da função adicionar?

  2. fala ai!

    testa um:
    fflush(stdin);
    depois de ler o caracter (e antes de ler a string).
    sei la.... so vendo de perto... mas a intençao do fflush(3) eh (+/-) essa.

    falow.



  3. aew cara....da uma olhada nisso...eu um lembro em q aula q ta...mas se nao me engano eh a funcao getchar();...apesar q o fflush(stdin); tbm deve de funciona...

    http://www.linuxdicas.com.br/modules...icles&secid=24

    :wink: :wink:

  4. eu sempre uso o fflush(stdin) e funciona...



  5. o fflush resolve.. mas se você fizer uma aplicação que grave dados em arquivos por exemplo, ao invéz de ficar dando fflush toda hora, você poderia fazer o seguinte:

    setvbuf(fdHandle, NULL, _IONBF, 0);

    fdHandle é o file-descriptor do arquivo.
    NULL era pra ser o buffer, mas nesse caso nao é necessário.
    _IONBF diz que não queremos bufferizar nada, ou seja, sem buffer streaming.
    e o ultimo parametro, 0, é o tamanho do buffer, também não precisamos.

    Mas preste atenção, isso faz com que TODAS OPERAÇÕES DE IO parem de fazer buffer-stream. Isso pode afetar a performance do sistema consideravelmente, principalmente se o processo é vital e consome muito processamento.






Tópicos Similares

  1. Como disponibilizar um aplicativo do servidor para a rede??
    Por Elvis no fórum Servidores de Rede
    Respostas: 3
    Último Post: 21-10-2002, 07:53
  2. Black list. Como fechar o Relay do SENDMAIL
    Por spalmeira no fórum Servidores de Rede
    Respostas: 5
    Último Post: 14-10-2002, 16:47
  3. COMO MONTAR A PARTIÇÃO DO WINDOWS????
    Por no fórum Servidores de Rede
    Respostas: 2
    Último Post: 15-09-2002, 19:41
  4. COMO MONTAR A PARTIÇÃO DO WINDOWS????
    Por no fórum Servidores de Rede
    Respostas: 5
    Último Post: 07-09-2002, 19:35
  5. como limpar o cache do squid?
    Por no fórum Servidores de Rede
    Respostas: 3
    Último Post: 17-08-2002, 11:13

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L