fgets在没有输入的情况下失败了

时间:2014-04-30 20:14:52

标签: 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(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);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您肯定会从之前的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();