fgets将被忽略,可能是由于其他scanf

时间:2017-01-24 14:59:55

标签: c scanf fgets

该程序不会在fgets函数中编译teste1。或者至少它没有正常工作,它不会让我输入字符串,程序将在打印后立即结束" Nome do cliente"。

如果我停用了该功能中的其他scanf,它将毫无问题地运行。

如何让fgets工作?

#include <stdio.h>
void teste1(){
    char teste[50];
    printf("Nome do cliente\n");
    fgets(teste,50,stdin);
}

void teste2(){
    teste1();
}

void teste3(){

        int opc1,opc2;
        printf("\nSeleccione a área desejada\n1- Clientes\n2- Concessionários\n3- Carros de demonstração\n");
        scanf("%d",&opc1);

        printf("\nSeleccione a área desejada\n1- Inserir\n2- Alterar\n3- Remover\n4- Consultar\n");    
        scanf("%d",&opc2);

    teste2();
}

int main()
{
    teste3();
}

1 个答案:

答案 0 :(得分:1)

您为最后scanf输入按下的 Enter 键将作为换行符保留在输入缓冲区中。 fgets函数将读取此换行符并认为它已完成。