C fgets在没有输入的情况下通过

C fgets在没有输入的情况下通过,c,fgets,C,Fgets,每当我调用此函数时,它都无法为用户提供输入字符串的机会。不知道为什么我很确定我的语法是正确的。我想我和这条新线有关,但我不知道如何摆脱它 void serchName(dealers_t *ptr, int numDealers) { char dealerName[NAME_LEN]; int index; printf("please enter the dealer's name:"); fgets(dealerName, sizeof(dealerNa

每当我调用此函数时,它都无法为用户提供输入字符串的机会。不知道为什么我很确定我的语法是正确的。我想我和这条新线有关,但我不知道如何摆脱它

 void serchName(dealers_t *ptr, int numDealers)
{
    char dealerName[NAME_LEN];
    int index;

    printf("please enter the dealer's name:");
    fgets(dealerName, sizeof(dealerName), stdin);
    system("PAUSE");

    for (index = 0; index < numDealers; index++, ptr++)
    {
        if (strcmp(dealerName, ptr->name) == 0)
        {
            printf("MATCH FOUND:%s\n%s\n%s\n%i\n%s\n", ptr->name,ptr->city,ptr->state,ptr->zip,ptr->phone);
        }
    }
}
void serchName(经销商、国际经销商)
{
char dealerName[名称];
整数指数;
printf(“请输入经销商名称:”);
fgets(dealerName、sizeof(dealerName)、标准DIN);
系统(“暂停”);
对于(索引=0;索引name)==0)
{
printf(“找到的匹配项:%s\n%s\n%s\n%i\n%s\n”,ptr->name,ptr->city,ptr->state,ptr->zip,ptr->phone);
}
}
}

您肯定有一些以前I/O活动遗留下来的
'\n'

最好在同一程序中使用
fgets()
,而不要与
scanf()
混合使用

但由于我看不到其他代码,建议以下人员使用剩余的
'\n'

printf("please enter the dealer's name:");
int ch;
ch = fgetc(stdin);
if (ch != '\n') ungetc(ch, stdin);
if (fgets(dealerName, sizeof(dealerName), stdin) == NULL) Handle_EOForIOError();

你在通话前收到了一些短信。确保你没有。fflush(stdin);也许吧?@Jim,如果你想要未定义的行为。scanf(“%c%*c”,&ch);/*为避免刷新stdin*/Fgets,还会将终端“\n”读入缓冲区,因此strcmp()将失败(除非ptr->name的末尾也有一个“\n”)