29-09-2008, 00:44
|
|
|
|
חבר מתאריך: 07.04.04
הודעות: 552
|
|
נסה להריץ את הקוד הבא (מ visual studio 2005 ומעלה):
תוכנית קונסול. התוכנית מבצעת הקצאה דינאמית של הכנסת נתוני סטודנטים לטבלה
ע"י הקשת קוד סטודנט, רווח, שם סטודנט ואז לחיצה על Enter
לאחר שאני מזין למשל שדה ראשון ולאחר מכן בוחר בתפריט 2 שזה להציג
את נתוני הטבלה עד עכשיו אני מקבל את מה שהזנתי בנוסף לג'יבריש.
אשמח מאוד אם מישהו ימצא לזה פתרון.
הנה יש לכם אתגר מאחר והפתרון הקודם לא עוזר !
אני יודע שיש איזו שורת קוד שעושה סוג של ניקוי מאגר זכרון אשר אמור למנוע
תופעה זו אך שכחתי מה הקוד ואם יש לכם דרך אחרת אשמח לדעת.
תודה מראש.
קוד:
#include "stdafx.h"
#include "string.h"
#include "malloc.h"
struct stu
{
char id[10];
char name[10];
};
struct stu *table;
int size;
int menu()
{
int choice;
printf("Menu:\n0.Exit\n1.Add new\n2.Show table\n");
scanf("%d",&choice);
return choice;
}
void add()
{
char id[10],name[10];
printf("Please type student id and student name: ");
scanf("%s%s",id,name);
table=(struct stu*)realloc(table,sizeof(struct stu)*size);
strcpy(table[size-1].id,id);
strcpy(table[size-1].name,name);
size++;
}
void print()
{
int i;
for(i=0;i<size;i++)
printf("%s %s\n",table[i].id,table[i].name);
}
void main()
{
int i;
table=NULL;
size=1;
i=menu();
while(i)
{
if(i==1) add();
else
if(i==2) print();
i=menu();
}
}
_____________________________________
כי ביתי בית תפילה יקרא לכל העמים
|