gpt4 book ai didi

C 字符串错误 - 需要理解代码

转载 作者:行者123 更新时间:2023-11-30 21:42:57 24 4
gpt4 key购买 nike

代码在第 19 行和第 20 行不起作用我正在尝试获取一个名为 hotel 的字符串...当我把 gets(hotel) 几乎放在所有东西上时,令人惊讶的是代码开始工作......但不是在代码中间。!!!!!

#include<stdio.h>
main()
{
char topping[24];
char hotel[50];
int slices;
int month,day,year,i;
float cost;
printf("how much a pizza cost in your area? ");
printf("enter in $XX.XX\n");
scanf("$%f",&cost);
printf("what is your favorite one word pizza topping?\n");
scanf("%s",&topping);
printf("how many slices of %s of pizza \n",topping);
scanf("%d",&slices);
printf("which is your favorite hotel in town?\n");
gets(hotel);
printf("what is today's date (enter in XX/XX/XXXX format)\n");
scanf("%d/%d/%d",&day,&month,&year);
printf("\n\n\n\n\nwhy not treat yourself %d slices of %s pizza in %s on %d/%d/%d it will cost you only %.2f",slices,topping,hotel,day,month,year,cost);
return 0;
}

最佳答案

这与我最近在这里谈论的事情是一样的:D lang - Using read and readln() in the same program虽然在 C 而不是 D,所以解决方案略有不同,但解释相同。

scanf 在空白处停止,这是一个换行符...它被视为输入的结尾,因此读取一个空行。

解决方案是在继续之前使用该换行符:

printf("how many slices of %s of pizza \n",topping);
scanf("%d",&slices);
fgetc(stdin); // ADDED THIS LINE TO READ PAST THE NEW LINE CHARACTER
printf("which is your favorite hotel in town?\n");
gets(hotel);

PS 不要使用 gets,而是使用 fgets(hotel, 50, stdin);50 是缓冲区的大小,确保它不会溢出。

关于C 字符串错误 - 需要理解代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25019713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com