gpt4 book ai didi

c - 我试图让这个程序询问书名和编号,但 while 循环有些不对劲

转载 作者:行者123 更新时间:2023-11-30 18:36:50 26 4
gpt4 key购买 nike

程序应该重复询问书名和编号,直到用户输入书名“end”,之后程序应该停止。

但是当我在第一个输入循环之后运行程序时,第二个循环之后的行为非常奇怪,我没有机会输入书名或结束程序。我尝试使用 fgets 但也不起作用。它确实工作得更好一些,但在第二个循环中,它会打印两个打印语句,然后要求输入。

int main()
{
int i, j, temp, bk_no[20], lib_size = 0;
char bk_name[20], end[3]="end";
printf("\n===========ACCESSING LIBRARY===========\n\n (Type end to close the library)\n");

while ( lib_size < sizeof bk_no/sizeof bk_no[0] ) //while lib_size<20->(20*4)/4
{
printf("\nWhat is the name of the book?\n");
scanf_s("%s", &bk_name);

if ( strcmp(bk_name, end)==0 )
break;

printf("What is the books number in the series?\n");
scanf_s("%d", &bk_no[lib_size]);

if ( bk_no[lib_size]==-1 )
break;

lib_size++;
}
}

最佳答案

  1. end[3]应该是end[4] ... 占 '\0'在字符串的末尾。

  2. scanf_s()应传递 "%s" 的大小参数,您使用它就像使用 scanf() 一样而不是scanf_s() read the documentation .

  3. 您正在将数组的地址传递给 scanf_s()两者都是错误的,scanf_s()scanf() .

    数组会自动指向其在此上下文中的第一个元素,因此您不需要 &将 1 传递给 scanf() 的运算符地址.

希望有帮助。

关于c - 我试图让这个程序询问书名和编号,但 while 循环有些不对劲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40070146/

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