注册 登录
编程论坛 C语言论坛

查找数组内元素进行比较输出时的问题

氻乐 发布于 2019-11-22 23:39, 2133 次点击
    char name[20];
                printf("请输入您要查询的姓名\n");
                scanf("%s",&name);
                for(i=0;i<400;i++)
                {
                    
                    if(strcmp(students[i].name,name)==0)//对比查找
                    {
                        printf("学生信息为:\n");
                        printf("学号:    %s\n",students[i].number);
                        printf("姓名:     %s\n",students[i].name);
                        printf("性别:    %s\n",students[i].gender);
                        printf("年龄:    %d\n",students[i].age);
                        printf("专业班级:%s\n",students[i].major);
                     }
                     else if(i==399 && strcmp(students[i].name,name)==0)
                     {
                          printf("查无此人");
                          break;
                     }
                     else
                     {
                         continue;
                     }        
此段程序可以顺利进入 比较环节但是如果换成这段
                char number[20];
                printf("请输入您要查询的学号\n");
                scanf("%s",&number);
                for(i=0;i<400;i++)
                {
                    if(strcmp(students[i].number,number)==0)
                    {
                        printf("学生信息为:\n");
                        printf("学号:    %s\n",students[i].number);
                        printf("姓名:     %s\n",students[i].name);
                        printf("性别:    %s\n",students[i].gender);
                        printf("年龄:    %d\n",students[i].age);
                        printf("专业班级:%s\n",students[i].major);
                    }
                    else if(i==399 && strcmp(students[i].number,number)==0)
                     {
                          printf("查无此人");
                          break;
                     }
                     else
                     {
                         continue;
                     }                    
便无法进行比较,请问是哪里出了问题,我又应当如何修改
谢谢
4 回复
#2
吹水佬2019-11-23 05:35
"无法进行比较"是什么意思?


[此贴子已经被作者于2019-11-23 05:37编辑过]

#3
氻乐2019-11-23 08:27
回复 2楼 吹水佬
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

就像这个 姓名就可以查询但是学号却不可以
#4
吹水佬2019-11-23 12:09
之前读取文件数据时没有考虑换行符,上一行的换行符被加到下一行number头部。
fscanf(fin,"%[^,],%[^,],%[^,],%d,%s",students[i].number, students[i].name, students[i].gender, &students[i].age, students[i].major)
只有本站会员才能查看附件,请 登录

改为:
fscanf(fin,"%[^,],%[^,],%[^,],%d,%s\n",students[i].number, students[i].name, students[i].gender, &students[i].age, students[i].major)
只有本站会员才能查看附件,请 登录



[此贴子已经被作者于2019-11-23 12:10编辑过]

#5
氻乐2019-11-23 13:42
回复 4楼 吹水佬
谢谢,学会了,
1