2014-02-23 16 views
0

此代碼用於在鏈接列表的開頭添加員工配置文件。出於某種原因,我無法識別,此代碼一次工作,然後它只是打印printf,然後退出循環。即使在輸入大量記錄之後,它仍然在做同樣的事情。那麼任何人都可以發現問題?在鏈接列表中插入配置文件

void insert_tobeg() { 
    char name[15]; 
    struct employee *newPtr; 
    printf("\n\n\tEnter the record to be entered:"); 
    gets(name); 

    if(strcmp(start->name, name) == 0) { 
     curr = (struct employee*)malloc(sizeof(struct employee)); 
     employee_entry(); 
     curr->newPtr = start; 
     start = curr; 
     printf("\n\n\tRecord has been added at the beggining!"); 
     return; 
    } 
} 
+0

它退出,因爲沒有循環。只有一個如果語句 – AndyFaizan

回答

0

您管理它不正確,您覆蓋第一個元素中的名稱,您需要寫入當前分配的ellement。 嘗試是這樣的

curr = (struct employee*)malloc(sizeof(struct employee)); 
employee_entry(); 
if(strcmp(curr->name, name) == 0) 
{ 
    curr->newPtr=start; 
    start = curr; 
    printf("\n\n\tRecord has been added at the beggining!"); 
    return; 
} 
else 
{ 
    free(curr); 
} 

And don't cast malloc result in C

0

你的意思是while循環而不是if和remove語句。

+0

好吧,我試過使用while並刪除return語句,它仍然沒有任何東西。 – Bonzi