Ternuraff 2019-01-06 14:19 采纳率: 0%
浏览 603

为什么C语言中字符串从文件中调用出来后会和键盘上输入的不相等?

问题出现在第二个定义的函数内
#include
#include
#include

void BUILD()
{
int a;
printf("请选择是否在我行开户(如果是请输入1,退出请输入0)请输入:\n");
scanf("%d",&a);
if(a==1)
{
int c,d;
char b[11],e[11];
printf("请输入您的姓名:\n");
scanf("%s",b);
printf("请输入您的电话号码:\n");
scanf("%s",e);
printf("请输入您的6位密码:\n");
scanf("%6d",&c);
printf("请确认您的6位密码:\n");
scanf("%6d",&d);
if(c==d && c>99999 && d>99999)
{
printf("恭喜您开户成功。\n");
printf("为了方便您的使用,您的账号与您的电话号码一致即:%s",e);
FILE*fp;
fp=fopen("账户","a+");
{
fprintf(fp,"%s\n",e);
}
fclose(fp);
FILE*str;
str=fopen("密码","a+");
{
fprintf(str,"%6d\n",d);
}
fclose(str);
}
else
printf("对不起,您的密码两次输入不同或密码位数不对,请重新开始。");
}

}

void ENTER()
{
char a[10],c[10];
int b,d;
FILE*fp;
fp=fopen("账户","r+");
fseek(fp,0L,0);
fscanf(fp,"%s",&a);
printf("%s",a);
rewind(fp);
fclose(fp);
FILE*str;
str=fopen("密码","r+");
fseek(str,0L,0);
fscanf(str,"%6d",&b);
rewind(str);
fclose(str);
printf("请输入您的银行账户:\n");
scanf("%d",&c[10]);
printf("请输入您的密码:\n");
scanf("%6d",&d);
if(a!=c)
{
printf("对不起,您输入的账户有误。\n");
}
else
if(d!=b)
{
printf("对不起,您的密码输入有误,请重试。\n");
}
else
{
printf("请选择您要办理的业务序号:\n");
printf("1.存款 2.取款 3.余额查询\n");
}
}
int main()
{
int f;
printf("欢迎来到银联。\n");
printf("请选择您要办理的业务序号:");
printf("1.创建银行账户。 2.个人业务办理\n");
scanf("%d",&f);
if(f==1)
BUILD();
if(f==2)
ENTER();
}

  • 写回答

1条回答 默认 最新

  • weixin_44371084 2019-01-07 18:11
    关注

    首先,要搞清楚你的手机号码是多少位,一般现在的手机号11位,你在存储的时候数组只有11位,字符串的'\0'没有计算在内。
    然后,在取的时候数组又成了10位,而且你在获取输入的账号是用的这行scanf("%d",&c[10]);有问题,应该是scanf("%s",c);
    最后,字符串比较用strcmp

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)