Pergunta

sempre que eu chamar essa função ignora sobre o fgets declaração de dentro dele.

void getString(char *str){ /* Read a string from the keyboard */
    fprintf(stdout,"Please enter a string: ");
    fgets(str,MAX_STRING_LEN,stdin);
}

aqui está a chamada de função

if(strcmp(cmd,"new")==0){ /* new string command */
        getString(current);
}
Foi útil?

Solução

Provavelmente você está misturando uso de scanf() em outro lugar no seu programa e fgets().Usar fgets() para todos a sua entrada, sempre para uma seqüência de caracteres, que, se necessário, usar sscanf() para converter a seqüência de caracteres em outros tipos de dados.

Veja o comp.lang.c FAQ descreve isso em mais detalhe:

http://c-faq.com/stdio/scanfinterlace.html

Outras dicas

A saída de fprintf(3) é armazenada em buffer.Você precisa liberar memória intermédia para forçar o prompt antes de tentar ler a entrada.O stderr canal é geralmente sem buffer, de modo que você pode escrever para que sem liberar manualmente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top