2014-02-23 3 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

같은 것을 시도 . 오직 하나의 if 문 – AndyFaizan

답변

0

사용자가 잘못 관리하면 첫 번째 요소의 이름을 덮어 쓰고 현재 할당 된 요소에 쓸 필요가 있습니다. 더 루프가 없기 때문에이 종료이

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

루프를 반복하는 동안 대신 return 문을 제거 했습니까?

+0

글쎄, 잠시 사용하려고하고 return 문을 제거해도 여전히 아무것도하지 않습니다. – Bonzi

관련 문제