为什么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个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问