我做的是一个项目管理系统,在按编号删除的时候,我是想如果查不到匹配的编号,就进行模糊搜索。but,当我键入其中一个编号的子串时,按理跳出了循环(确实也跳出了),不过是跳出就直接终止了程序,就是说我后面的代码都没运行呢!
```c
void del(struct Node* list){
int i;
char id1[8];
printf("请输入您想要删除的项目编号(格式:字母+6个数字):\n");
scanf("%s",id1);
// getchar();
// for(i=0;i<7;i++){
// scanf("%c",&id1[i]);
// }
// id1[7]='\0';
printf("再次确认你所要删除的项目编号是:");
puts(id1);
struct Node* pos;
struct Node* p;
pos=list;
if(list->next==NULL){
printf("\n链表为空!\n");
return;
}
else{
while(strcmp(id1,pos->next->data.id)!=0){
if(pos->next==NULL){
break;
}
printf("xixi\n");
pos=pos->next;
}
printf("你怎么不执行这一步??\n");
p=pos;
printf("??\n");
if(strcmp(id1,pos->next->data.id)==0&&pos->next!=NULL){
printf("\n\t你删除的项目信息为: \n");
printf("\t项目名称:%s\n",pos->next->data.name );
printf("\t项目类别:%s\n",pos->next->data.category);
printf("\t项目编号:");
for(i=0;i<7;i++){
printf("%c",pos->next->data.id[i]);
}
printf("\n");
// puts(pos->data.id);
printf("\t负责人:%s\n",pos->next->data.head);
printf("\t指导老师:%s\n",pos->next->data.teacher);
printf("\t成员:");
// puts(pos->data.players);
printf("%s\n",pos->next->data.players);
printf("\t总人数: %d\n",pos->next->data.number);
p->next=pos->next->next;
free(pos->next);
getchar();
printf("删除成功!\n");
}
else{
printf("\t没有找到输入的编号信息!\n");
printf("正在进行模糊搜索......\n");
printf("模糊搜索找到的信息如下:\n");
}
}
return;
}
运行结果是这样的:

咋办?