C 向结构中添加更多数据
我创建了一个函数,可以将书籍添加到结构中,但当我尝试添加更多书籍时,上一本书将被删除。我做错了什么C 向结构中添加更多数据,c,C,我创建了一个函数,可以将书籍添加到结构中,但当我尝试添加更多书籍时,上一本书将被删除。我做错了什么 void addBooks(void) { char chChoice; int cnt = 0; printf("\n\t\t~~ADD NEW BOOK\n"); printf("Enter the isbn: "); scanf("%d", &b[cnt].nid); printf("Enter books title: ");
void addBooks(void)
{
char chChoice;
int cnt = 0;
printf("\n\t\t~~ADD NEW BOOK\n");
printf("Enter the isbn: ");
scanf("%d", &b[cnt].nid);
printf("Enter books title: ");
scanf("%s", b[cnt].chTitle);
printf("The record was saved successfully!");
printf("Save more books? (Y / N) ");
scanf("%s", &chChoice);
if (chChoice == 'y')
{
addBooks();
cnt = cnt + 1;
}
else
mainMenu();
}
您需要cnt
作为一个参数,否则当cnt
为本地时,您可以将该值重置为0本身。您还可以将cnt
声明为static
,如果这样做,请不要忘记在调用函数之前递增cnt
。另外,对字符使用%c
,而不是%s
每次调用addBooks()时,代码中的第四行将cnt的值重置为零。将该行替换为:
static int cnt = 0;
这将导致仅在第一次调用addBooks()时将该值设置为零
此外,在递归调用addBooks()之前,必须先增加cnt的值,如下所示:
什么是
b
?您能创建一个吗?请提供有关结构以及如何声明/定义b[]数组(?)的更多信息。您可能会考虑将指针传递到数组的当前B[CNT]元素,并从AddioBooScript()返回一个状态,以指示=1,您得到了一本书,或者= 0没有得到一本书。<代码> SCANF(“%s”,CHORY);<代码>:%s”
-->%c”
我已经删除了我的答案,因为它不完整。为什么不更新您的答案以获得完整的解决方案。
static int cnt = 0;
if (chChoice == 'y')
{
cnt = cnt + 1;
addBooks();
}