我正在通过使用(单个)链表编写一个简单的 C 员工数据库程序。目前我正在尝试编写“删除员工”功能,如下所示。
我正在尝试使用 while 循环遍历链表,并在当前指针名称字段与用户希望删除的名称匹配时停止。(存储在行库中。)
出于某种原因,无论如何,它都会一直循环遍历数据库直到结束。我尝试在每个阶段打印 linestore & currptr->name 的内容,它们看起来是正确的,所以我不知道我做错了什么。
任何帮助将不胜感激。
删除员工功能:
char *lineptr;
char linestore[300];
lineptr = &linestore;
struct Employee *currptr = root;
struct Employee *prevptr = NULL;
fprintf(stderr, "\nPlease enter the EXACT name of the employee to be deleted.\n");
read_line(stdin, lineptr, MAX_NAME_LENGTH); //linestore function is working (checked)
while ( (currptr->name != linestore) & (currptr != NULL) )
{
fprintf(stderr, "\n***Searching database...***\n");
fprintf(stderr, "***The current record is %s", currptr->name);
prevptr = currptr;
currptr = currptr->next;
}
if ( currptr->name == linestore )
{
fprintf(stderr, "\n***Record DELETED.***\n");
}