1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

getchar

Discussão em 'Programação' iniciada por AquaFight, 14 de Abril de 2008. (Respostas: 4; Visualizações: 593)

  1. AquaFight

    AquaFight Power Member

    ola.
    estou neste momento a 'reaprender' C mas estou a ter um problema que, quando inicialmente comecei a programar, não tive, uma vez que corria sempre os programas ou em linux ou no cygwin (emulador de linux).
    estou a fazer pequenos exercícios básicos (tipo contar o número de vezes que uma certa letra aparece num input, esse tipo de coisas). o problema é este: quero fazer, por exemplo, um programa que conte caracteres ou algo do género e uso o getchar() num ciclo. era suposto, ao carregar no enter, o programa processar o que quer eu tenha escrito mas ele simplesmente faz um parágrafo novo.
    talvez se usar o scanf isto não aconteça (ou se ler de um ficheiro ou de uma string claro) mas gostava de saber porque é que, com certos programas, ao carregar no enter ele lê o que já escrevi e noutros aparece um paragrafo novo.
     
  2. Baderous

    Baderous Banido

    Penso que tem a ver com o facto de o buffer ainda conter alguns caracteres aquando da execução do getchar(), mas deixa aí um bocado de código para confirmar se é isso.
     
  3. AquaFight

    AquaFight Power Member

    esté é um dos programas que nao posso testar por causa disso:


    Código:
    #include <stdio.h>
    #define IN 1
    #define OUT 0
    
    
    int main () {
    
        int nword[15];
        int state = OUT;
        int i, j;
        char c;
    
    
        for(i = 0; i <= 15; ++i)
            nword[i]=0;
    
    
        while((c = getchar()) != EOF)
        {
            if(c == ' ' || c == '\t')
            {
                if (state == IN)
                {
                    ++nword[i];
                    i = 0;
                }
                state = OUT;
            }
            else
            {
                ++i;
                state = OUT;
            }
        }
    
        for(i = 0; i <= 15; ++i)
        {
            printf("Palavras de %d letras: ", i);
            for(j = 0; j <= nword[i]; ++j)
                printf(" *");
            printf(" = %d", nword[i]);
        }
    
        return 0;
    }
    
    é natural que tenha erros porque nao pude testar. de qualquer forma deve dar para perceber porque é que não dá.
     
  4. Baderous

    Baderous Banido

    O problema aqui é que estás a usar o getchar() para ler caracteres até que o caracter lido seja EOF, o que nunca vai acontecer porque não estás a processar ficheiros.
     
  5. metralha761

    metralha761 1st Folding then Sex

    usa antes scanf e strlen.

    com isto em 3 linhas de codigo (dentro do main) tens td :P
     

Partilhar esta Página