Ir para conteúdo
Fórum Script Brasil
  • 0

Problema A Ler String


Synk

Pergunta

Olá, estou com um problema ao ler uma string do utilizador usando gets() ou fgets().

Possuo um método no meu programa que contém a seguinte parte:

void alteraDevice(){
    FILE *fp;
    int opcao=0;
    //char teste[1024];
    char* change;
    char file[1024];
    



    
    sprintf(file,"%s.config",Device.device_name+1);

    if ((fp = fopen (file,"w"))==NULL) {
            perror("Error opening target file!\n");
            fclose(fp);
      }
    else{
        do{
            printf("Insira o que deseja mudar o valor:\n");
            printf("1- Descrição\n");
            printf("2- temp1\n");
            printf("3- temp2\n");
            scanf("%d",&opcao);
            if(opcao<1 && opcao >3)
                printf("Por favor insira apenas uma das opções apresentadas!");
            else if(opcao==1){
                printf("Insira o novo valor do campo:\n");
[b]                fgets(change,1024,stdin); ---> é aqui o problema[/b]
....
....
....

O problema que está a acontecer é que quando o programa chama a função fgets() deveria ficar a espera que o utilizador insira uma string mas isso não acontece e executa os comandos a seguir no meu programa!!! Não sei o que possa estar a acontecer pois usando a função fgets() num outro programa ela funciona correctamente!!

Algo me está a escapar? Alguém me pode ajudar?

Também me podem dizer como obter os páginas de man para os comandos de gcc? Estou a usar Ubuntu 6.06.

Desde já obrigado e peço desculpa pelo post anterior sem login ;)

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá, Synk.

Como o fgets lê qualquer caracter, ele vai ler o '\n' que o usuário aperta no

scanf("%d",&opcao);
Para corrigir isso, acho que basta acrescentares um getchar() logo depois do scanf, para que ele ignore o caracter que o usuário apertou depois de fornecer dado ao scanf.
scanf("%d",&opcao);
getchar();

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...