对结构体内容的查找,为什么查找结果一直是查无此人
#include<stdio.h>#include<string.h>
#define MaxSize 100
#define N 3
typedef struct{
char num;
char name;
char ill;
}patient;
typedef patient ElemType;
#include"SequenceList.h"
int ListFind(SequenceList L,char *x);
int main(){
patient s;
SequenceList mylist;
int i,judge;
char x;
ListInitialize(&mylist);
for(i=0;i<N;i++){
printf("------请输入第%d个病人的信息------\n",i+1);
printf("请输入第%d个病人的病历号\n",i+1);
scanf("%s",s.num);
printf("请输入第%d个病人的姓名\n",i+1);
scanf("%s",s.name);
printf("请输入第%d个病人的症状\n",i+1);
scanf("%s",s.ill);
ListInsert(&mylist,i,s);
}
printf("输入查找的病人名字:\n");
scanf("%s",x);
judge=ListFind(mylist,x);
if(judge!=-1)
{
ListGet(mylist,judge,&s);
printf("病人信息如下:\n病历号:%s\n姓名:%s\n症状:%s\n",s.num,s.name,s.ill);
}
}
int ListFind(SequenceList L,char *x){
int i;
for(i=0;i<L.size;i++){
if(strcmp((L.list->name),x)==0){
return i;
}
}
printf("查无此人!\n");
return -1;
} 必须给出 "SequenceList.h" 文件的内容,否则,关键数据类型和函数定义都不清楚,根本无法帮你找到问题症结。 #include<stdio.h>
#include<string.h>
typedef struct{
ElemType list;
int size;
}SequenceList;
SequenceList L;
void ListInitialize(SequenceList *L){ //空表
L->size=0;
}
int ListLength(SequenceList L){ //表长度
return L.size;
}
int ListInsert(SequenceList *L,int i,ElemType x){ //数据插入
int j;
if(L->size>=MaxSize){
printf("Full,Insert Defult!\n");
return 0;
}
if(i<0||i>L->size){
printf("i Error!\n");
return 0;
}
for(j=L->size;j>i;i--){
L->list=L->list;
}
L->list=x;
L->size++;
return 1;
}
int ListDelete(SequenceList *L,int i,ElemType *x) //数据删除
{
int j;
if(L->size<=0){
printf("Nothing can be deleted!\n");
return 0;
}
else if(i<0||i>L->size){
printf("i Error!\n");
return 0;
}
else{
*x=L->list;
for(j=i+1;j<=L->size-1;j++){
L->list=L->list;
}
L->size--;
return 1;
}
}
int ListGet(SequenceList L,int i,ElemType *x){ //取数据
if(i<0||i>L.size-1){
printf("Error!\n");
return 0;
}
else{
*x=L.list;
return 1;
}
} Wungbun 发表于 2022-3-4 23:33
#include
#include
typedef struct{
#include<stdio.h>
#include<string.h>
#define MaxSize 100
#define N 3
typedef struct{
char num;
char name;
char ill;
} patient ;
typedef patient ElemType;
#include "SequenceList.h"
int ListFind(SequenceList L , char * x)
{
int i , r = -1 ; // 【修改】
for(i = 0 ; i < L . size ; i ++) {
if(strcmp((L . list . name) , x) == 0) { // 【修改】
r = i ; // 【修改】
break ; // 【修改】
}
}
return r ; // 【修改】
}
int main(void)
{
patient s;
SequenceList mylist;
int i,judge;
char x;
ListInitialize(&mylist);
for(i=0;i<N;i++){
printf("------请输入第%d个病人的信息------\n",i+1);
printf("请输入第%d个病人的病历号\n",i+1);
scanf("%s",s.num);
printf("请输入第%d个病人的姓名\n",i+1);
scanf("%s",s.name);
printf("请输入第%d个病人的症状\n",i+1);
scanf("%s",s.ill);
ListInsert(&mylist,i,s);
}
printf("输入查找的病人名字:\n");
scanf("%s",x);
judge=ListFind(mylist,x);
if(judge != -1) {
ListGet(mylist , judge , & s) ;
printf("病人信息如下:\n病历号:%s\n姓名:%s\n症状:%s\n" , s . num , s . name , s.ill) ;
} else { // 【修改】
printf("查无此人!\n") ;// 【修改】
} // 【修改】
}
页:
[1]