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 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建