鱼C论坛

 找回密码
 立即注册
查看: 1663|回复: 19

[已解决]学生成绩管理系统禁止学号为中文问题

[复制链接]
发表于 2021-11-5 16:08:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我这个输入中文还是会往下一个进程进行
struct Student 
{
        char name[40];
        char num[10];
        int English_mark;
        int Math_mark;
        int c_mark;
        int avermark;
        char sex;
        int sum;
};
        while(1)
        {
                printf("该学生的学号为:");
                scanf("%s",student->student.num);
                getchar();
                len=sizeof(student->student.num)/sizeof(char);
                if(temp==NULL)
                {
                        break;
                }
                for(i=0;i<len;i++)
                {
                        if(student->student.num[i]>='0'&&student->student.num[i]<='9')
                        {
                                break;
                        }
                        else
                        {
                                continue;
                        }
                }
                while(1)
                {
                        if(!strcmp(student->student.num,temp->student.num)||temp==NULL)
                        {
                                break;
                        }
                        temp=temp->next;
                }
最佳答案
2021-11-5 20:01:00
本帖最后由 jhq999 于 2021-11-5 20:29 编辑
superswagy2002 发表于 2021-11-5 19:36
我想解决的问题是那个学号里我输中文的话,就会重新在执行一遍,我想完成这个操作

struct Student 
{
        char name[40];
        char num[10];
        int English_mark;
        int Math_mark;
        int c_mark;
        int avermark;
        char sex;
        int sum;
};
int  main()
{
        Student student;
        int i=0;
        while(1)
        {
                printf("该学生的学号为:");
                scanf("%s",student.num);
                getchar();
                                int len=0;
                                while (student.num[len++]);
                                for (i = 0; i < len; i++)
                                {
                                        if (student.num[i]<0)//因为中文参考gbk编码,肯定有字节的值是负数
                                        {
                                                break;
                                        }
                                }
                                if (i!=len)
                                {
                                                break;
                                }
        }     
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-5 16:15:41 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 村里小黑 于 2021-11-5 16:23 编辑

%s输入的是字符串,%d输入的才是整形数据。
你要输入学号是数字,这里改成%d就好了
                printf("该学生的学号为:");
                scanf("%d",student->student.num);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-5 16:21:53 | 显示全部楼层

回帖奖励 +1 鱼币

村里小黑 发表于 2021-11-5 16:15
%s输入的是字符,%d输入的才是整形数据。
你要输入学号是数字,这里改成%d就好了

%s是字符串,%c是字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-5 16:23:36 | 显示全部楼层
jhq999 发表于 2021-11-5 16:21
%s是字符串,%c是字符

感谢提醒,已改正
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-5 19:36:01 | 显示全部楼层

我的学号就是字符串的类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-5 19:36:51 | 显示全部楼层

我想解决的问题是那个学号里我输中文的话,就会重新在执行一遍,我想完成这个操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-5 20:01:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jhq999 于 2021-11-5 20:29 编辑
superswagy2002 发表于 2021-11-5 19:36
我想解决的问题是那个学号里我输中文的话,就会重新在执行一遍,我想完成这个操作

struct Student 
{
        char name[40];
        char num[10];
        int English_mark;
        int Math_mark;
        int c_mark;
        int avermark;
        char sex;
        int sum;
};
int  main()
{
        Student student;
        int i=0;
        while(1)
        {
                printf("该学生的学号为:");
                scanf("%s",student.num);
                getchar();
                                int len=0;
                                while (student.num[len++]);
                                for (i = 0; i < len; i++)
                                {
                                        if (student.num[i]<0)//因为中文参考gbk编码,肯定有字节的值是负数
                                        {
                                                break;
                                        }
                                }
                                if (i!=len)
                                {
                                                break;
                                }
        }     
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-5 20:25:26 | 显示全部楼层

还是不行,一输中文就下一个程序了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-5 20:26:28 | 显示全部楼层
superswagy2002 发表于 2021-11-5 20:25
还是不行,一输中文就下一个程序了


理解错了我以为有中文就停止循环退出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-5 20:27:58 | 显示全部楼层

把你那个30行改为if(i==len)就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-5 20:29:20 | 显示全部楼层
superswagy2002 发表于 2021-11-5 20:27
把你那个30行改为if(i==len)就行了

你知道这个估计自己就能写了
if (student.num[i]<0)//因为中文参考gbk编码,肯定有字节的值是负数
                                        {
                                                break;
                                        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-5 20:33:13 | 显示全部楼层
jhq999 发表于 2021-11-5 20:29
你知道这个估计自己就能写了

确实谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-5 21:09:33 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-5 21:19:40 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-5 21:46:58 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-6 09:10:55 | 显示全部楼层

回帖奖励 +1 鱼币

可以用循环做判断!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-6 19:12:05 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-7 12:49:45 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-7 14:17:26 | 显示全部楼层

回帖奖励 +1 鱼币

.....................................
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-8 08:51:52 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 21:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表