リンクされたリストを試していましたが、何らかの理由で本来の動作をしていません。1 を選択した後に数量を入力すると、ノードが既存のリストに追加されるまでは問題ありません。その後、数量は奇妙な数字の文字列になります。また、寄付リストに複数のノードを追加しようとすると、プログラムがクラッシュします。
編集: 上記の問題は解決されましたが、言及するのを忘れていた別の問題があります。リストを印刷しようとすると、何も印刷されません。4を選ぶとこうなります。
EDIT2: 印刷機能は最初のノードのみを印刷し、その後は何も印刷しません。助けてください。
これがコードです。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct donation{
char name[50];
int quant;
struct donation* next;
}donate;
donate* addItem(donate *mylist,donate *temp){
donate *front=(donate*)malloc(sizeof(donate*));
if(mylist==NULL)
return temp;
front=mylist;
while(mylist->next!=NULL)
mylist=mylist->next;
mylist->next=temp;
return front;
}
void print(donate* donList){
printf("Printing the Donations Table\n\n");
if(donList!=NULL){
while(donList->next!=NULL){
printf("%s %d\n",donList->name,donList->quant);
donList=donList->next;
}
}
}
main(){
donate *list=NULL;
while(1){
int choice;
printf("1. Add a donation\n);
printf("Enter your choice: ");
scanf("%d",&choice);
if(choice==1){
donate* temp=(donate*)malloc(sizeof(donate*));
printf("\nEnter inventory type: ");
scanf("%s",temp->name);
printf("Enter the amount: ");
scanf("%d",&temp->quant);
temp->next=NULL;
list=addItem(list,temp);
printf("\nDonation Added!\n");
printf("%s %d\n",list->name,list->quant);
}
else if(choice==4){
print(list);
}
}
system("pause");
return 0;
}
ありがとう!