关于已有文本的更新覆盖问题
求教各位高手,我在做ATM的模拟程序,做到改密码这部分。我从文本中把用户的密码读出来,赋给了一个变量,然后改变这个变量的值(就是更改了密码),然后我想把密码重新写回文本中,只想在文本中原来保存密码的地方覆盖掉旧的密码就行。注:文本中还保存了用户名,卡号,身份证号码等信息。我只想把密码覆盖掉。
但是不知道怎么做,下面贴出我读出密码这段程序,我把读出的密码给了code[10]:
char code[10];//从文本读取的用户密码
char code1[10];//用户登陆时输入的密码
char newcode[10];//新密码
char newcode1[10];//重复输入的新密码
if((userfp=fopen(Cardnum, "r "))==NULL)
{printf( "Can not open file\n ");
exit(0);
}
fgets(code,7,userfp);
printf( "请输入你原来的密码:\n ");
scanf( "%s ",code1);
while(strcmp(code,code1)!=0)//验证密码是否正确
{
printf( "您输入的密码不正确,请重新输入!\n ");
printf( "请输入密码: ");
scanf( "%s ",&code1);
}
printf( "请输入你的新密码:\n ");
scanf( "%s ",&newcode);
printf( "请再次输入新密码:\n ");
scanf( "%s ",&newcode1);
while(strcmp(newcode,newcode1)!=0)//验证密码是否正确
{
printf( "您输入的密码不一致,请重新输入!\n ");
printf( "请输入密码: ");
printf( "请输入你的新密码:\n ");
scanf( "%s ",&newcode);
printf( "请再次输入新密码:\n ");
scanf( "%s ",&newcode1);
}
[解决办法]
问题多多,printf( "请输入你的新密码:\n ");像这样的语句中的回车键都没剔除掉
建议在这样的语句后面都加一个getchar();语句
[解决办法]
把你的文本文件格式贴出来
[解决办法]
char str[]= "00000 ";
infile.seekp(7,ios::beg);
infile.write(str,4);
[解决办法]
a1 原密码 a2 新密码
memset(a1,0,sizeof(a1))清空数组
strcpy(a1,a2) 拷贝字符串
我的想法不知道有没有用
[解决办法]
fseek()
zxg623(蓝色的梦)的就行啊
[解决办法]
在从文本中读取密码前
long los=0;
调用一下:los=ftell(userfp);
在往文本内写回时先调用一下:fseek(userfp,los,SEEK_SET);
sprintf(userfp, "%7s ",newcode1);
就ok了。
[解决办法]
楼主,发下ATM的题给我吧
谢谢
chenyu2202863@yahoo.com.cn