我無法將所有條目刪除到定義的結構中。這是在「全部刪除」功能刪除C編程中的所有結構條目
typedef struct person //Structure Set up
{
char fname[20];
char lname[20];
char number[20];
} person;
void delInfo(int num_entries,person*contacts)
{
char delfirst[20]; //Setting up Arrays to match entry
char dellast[20];
printf("\n First Name: ");
scanf("%s",delfirst);
printf(" Last Name: ");
scanf("%s",dellast);
int i=0;
for (i=0; i<num_entries; i++) //Going through contacts
{
if (strcmp(delfirst,contacts[i].fname)==0 && strcmp(dellast,contacts[i].lname)==0) //Testing for match between entry and contacts
{
for (i=i; i<num_entries-1; i++) //Shifting every contact AFTER match down one
{
contacts[i]=contacts[i+1];
}
if(num_entries !=0)
contacts=(person*)realloc(contacts,sizeof(person)*(num_entries-1)); //Freeing memory at end by way of realloc
printf("\n %s %s deleted from contacts\n\n",delfirst,dellast);
break;
}
}
if(i == num_entries)
{
printf("\n Entry Not Found\n");
}
system("pause");
}
void deleteall(int num_entries,person*contacts) //deleting all function
{
int i,j;
for(i=0;i<num_entries;i++){
contacts[i].fname=NULL;
contacts[i].lname=NULL;
contacts[i].number=NULL;
}
free(contacts);
printf("\n All contacts deleted\n\n");
system("pause");
}
問題對單個項目的缺失和我嘗試的功能代碼,他們是不兼容的類型(試圖從虛空分配到陣列)。我可以使用某種循環並使用realloc
將數組縮短爲0嗎?我不確定如何清除所有條目。
您可以詳細說明爲什麼我必須使用指向' char'而不是'char'數組來取消分配/刪除? – NLhere
@NLhere:因爲我們使用'malloc'動態分配內存,它總是返回一個指針值。 –