Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Sat, 09 Jun 2012 05:49:19 -0500 Message-ID: <4FD32A2F.1A9E@mindspring.com> Date: Sat, 09 Jun 2012 06:49:19 -0400 From: pete Reply-To: pfiland@mindspring.com Organization: PF X-Mailer: Mozilla 3.04Gold (WinNT; I) MIME-Version: 1.0 Newsgroups: comp.lang.c Subject: Re: linked list References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 81 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 4.154.219.136 X-Trace: sv3-KfvYm7tX+hUL2cJCsEiQSu4b5h3IpIDurPy797d6WodryfwWVFTD+Bvd2O+ORv5yv17+V7irv9A5x5f!SVuggclJN4ciANRhkwzuH6aKLhcchSR72IqObTOgf6Uw//qAi6Wr21debV0kRPwDsfhglg2vrGwP!sd96lpzRRgU= X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 2798 Xref: csiph.com comp.lang.c:22057 Zhang Yuan wrote: > > ---------------------------------------------------------------------------- > #include > #include > struct stu{ > int num; > char name[12]; > int age[0]; > struct stu *next; > }; > > int main(){ > > struct stu *curr,*head; > > head=(stu *)malloc(sizeof(stu)); > curr=head; > scanf("%d",&(head->num)); > curr->next=NULL; > > while(curr->num!=0){ > scanf("%s%d",curr->name,curr->age); > curr=(stu *)malloc(sizeof(struct stu)); > scanf("%d",&(curr->num)); > curr->next=NULL; > } > return 0; > } > > -------------------------------------------------------------------------- > it doesn't work.When I debug: > > input : > 101 zhang 19 > > the memory information:4 pictures > http://flic.kr/p/ccMQey > > why 0x6f17e0 change from 00-->13 unexpectedly. > I think the "*next" and "int age"storaged in different place. > but it looks like it overwrite? #include #include struct stu{ struct stu *next; int num; char name[12]; int age; }; int main(void) { struct stu *curr,*head; head = malloc(sizeof *head); if (head != NULL) { curr = head; puts("enter number"); scanf("%d", &(head -> num)); curr -> next = NULL; while(curr -> num != 0){ puts("enter name and age"); scanf("%s%d", curr -> name, &(curr -> age)); curr = malloc(sizeof *curr); if (curr == NULL) { break; } puts("enter number"); scanf("%d", &(curr -> num)); curr -> next = NULL; } } return 0; } -- pete