我有这个功能,但我的fgets功能无法正常工作,有人可以帮帮我吗? 在第3种情况下,我要求用户输入他想搜索酒店的东西,比如一个部分单词,两个单词等。当我运行它时它不能正常工作,我不明白为什么。
scanf("%d", &option);
case 3:
printf("\nEnter the name of the hotel you want to search for.\n\n>>>");
fgets(asked_hotel, sizeof(asked_hotel)-1, stdin);
printf("The hotels matching what you searched are:\n\n");
find_hotel(hotel_name,hotel_rating,address_name,city_name,address_code,NUM_HOTELS,asked_hotel);
答案 0 :(得分:3)
这里的问题是您使用scanf
来获取选项。它提取数字,但将换行符留在缓冲区中。这意味着当您下次拨打fgets
时,它会读取该换行符,您将获得一个空行。
最简单的解决方案是让scanf
跳过尾随空格,包括换行符。这是通过在格式代码之后添加空格来完成的:
scanf("%d ", &option);
/* ^ */
/* | */
/* Note space here */
答案 1 :(得分:0)
建议将所有scanf()
次来电更改为fgets()
/ sscanf()
对。例如:
scanf("%d", &option);
到
char buf[80];
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &option);