【发布时间】:2014-05-01 06:24:42
【问题描述】:
每当我调用此函数时,它都无法让用户有机会输入字符串。不知道为什么很确定我的语法是正确的。认为我与换行符有关,但我不知道如何摆脱它
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);
}
}
}
【问题讨论】:
-
你在通话前的标准输入中有一些东西。确保你不这样做。
-
fflush(stdin);也许?
-
@Jim 仅当您想要未定义的行为时。
-
scanf("%c%*c", &ch); /* 避免刷新标准输入 */
-
Fgets 还将终端 '\n' 读入缓冲区,因此 strcmp() 将失败(除非 ptr->name 的末尾也有 '\n')