입력 파일 :포인터 값 변경
JOHN 9999999999
MEENA 9888888888
RIA 8718218218
SONIA 7777777777
FINCH 1234567890
내가 그것을에 "NO VALUE"항목으로 sentinal을 만들 list.I로 파일의 내용을 추가하여 원형 연결리스트를 만들려고합니다.
uploadAddresses()에서 while 루프가 끝날 때 gdb p-> next-> name에서 코드를 테스트했을 때 Finch.How가 가능합니까? p 값이 동일합니다. 각각 임시 값만 변경됩니다. 되풀이.
#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXPHONENO 100 //Variables declaration struct Contact { char *name; char *mobileno; struct Contact *next; }; typedef struct Contact Contact; typedef Contact* PHBOOK; //Function declaration PHBOOK createAddressBook(); PHBOOK uploadAddresses(PHBOOK pb,char *name); //Implementation PHBOOK createAddressBook(){ PHBOOK pb = (PHBOOK)malloc(sizeof(Contact)); pb->name = "NO ENTRY"; pb->mobileno = "NO ENTRY"; pb->next = pb; return pb; } PHBOOK uploadAddresses(PHBOOK p,char *fname){ PHBOOK temp = p; char mob[20],name[20]; FILE *fp = fopen(fname,"r"); while(fscanf(fp,"%s %s",name,mob)!=EOF){ temp->next = (PHBOOK)malloc(sizeof(Contact)); temp = temp->next; temp->name = name; temp->mobileno = mob; printf("%s %s\n",name,mob); } temp->next = p; return p; } int main(){ PHBOOK pb = createAddressBook(); pb = uploadAddresses(pb,"/home/user/names_mobile"); return 0; }
여기서'createAddressBook' 함수의 코드는 무엇입니까? –
createAddressBook()에 대한 코드를 게시했습니다. – user3310015
순환 링크 된 목록을 원한다면 왜 다음 항목 만 가리키고 이전 항목도 가리키고 있지 않습니까? 또한,리스트의 마지막 요소를 정의하기 위해, 다음 요소에 대한 포인터는 그 자체가 아닌'null'으로 정의되는 데 사용됩니다. – adripanico