gpt4 book ai didi

c - 为什么这会产生垃圾值(value)?

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:37 24 4
gpt4 key购买 nike

当我的程序运行并显示数据时,我得到垃圾/垃圾值作为输出。

为什么会这样?

有人可以帮助我了解如何正确传递指针而不获取垃圾值吗?

这个程序是关于 struct books 类型变量的堆栈创建。

默认情况下,变量 bks 不应该通过指针传递并在 b 更改时更改吗?

bks 仍在存储垃圾值。

这是我的代码:

#include<stdio.h>
#include<stdlib.h>
struct books
{
int yrpub;
char name[100],author[50];
};
int top=-1;
int push(struct books b[],int top,int n)
{
if(top==n-1)
return -1;
else
{
++(top);
printf("Enter books info: \n");
printf("Enter name: ");
gets(b[top].name);
printf("Enter author: ");
gets(b[top].author);
printf("Enter Year of publish: ");
scanf("%d",&b[top].yrpub);
return top;
}
}
void display(struct books b[],int top)
{
int i;
if(top==-1)
printf("No books in the stack...");
for(i=0;i<=top;i++)
{
printf("Details of book %d: \n",i+1);
printf("Name: %s\nAuthor: %s\nYear of publish: %d\n",b[i].name,b[i].author,b[i].yrpub);
}
system("pause");
}

int main()
{
struct books bks[10];
int ch;
system("cls");
printf("Select an option:\n");
printf("1. Push book\n2. Pop book\n3. Peep book\n4. Display all books info\n5. Exit\n");
printf("Enter a choice: ");
scanf("%d",&ch);
fflush(stdin);
switch(ch)
{
case 1:
system("cls");
top=push(bks,top,10);
break;

case 4:
system("cls");
display(bks,top);
break;

case 5: exit(0);

default: printf("\nWrong choice...Please retry.");
long i,j;
for(i=0;i<1000000;i++)
for(j=0;j<100;j++);
}
main();
}

最佳答案

每次递归调用 main() 时,都会创建一个新数组 bk

您在上一次调用 main() 时输入的信息对新调用是隐藏的。

  • 迭代是人之常情;递归,神圣。

在这种情况下,为了人性而放弃神性。使用迭代——在这种情况下它更好。

这是你的首要问题;也可能存在其他差一或其他错误。

关于c - 为什么这会产生垃圾值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545253/

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