读书人

VC中关于文件的保存与读取的有关问题

发布时间: 2012-02-08 19:52:21 作者: rapoo

VC中关于文件的保存与读取的问题
本人最近在用VC做ATM的模拟程序,我想要把用户开户的资料分别用用户的名字保存为文本,然后在用户下次登陆的时候从文本中读出用户的资料(比如密码),然后比较和用户输入的密码是否一致。现在刚做好了开户这一块,遇到一个问题,就是在单独用开户的那个函数时可以用用户名分别保存资料,但是一旦在主函数中调用就会出错。请高手帮我解决用每一个户名分别保存各自的资料以及在用户下次登陆时从文本读出开户时输入的密码,以和当时输入的密码比较!
下面贴出我的程序:
#include "stdio.h "
#include "string.h "
#include "stdlib.h "
//开户[1]
void Newuser()
{
FILE *userfp;
char name[30]; //用户名
if((userfp=fopen(name, "w "))==NULL) //分别用用户的名字为文本名保存文本
{
printf( "Can not open file\n ");
exit(0);
}
char IDnum[30]; //身份证号码
char code[10]; //第一次输入的密码
char code1[10]; //第二次输入的密码
int Length; //身份证的位数
int Length1; //密码的位数
printf( "请输入您的姓名: ");
scanf( "%s ",&name);
printf( "请输入您的身份证号码: ");
scanf( "%s ",&IDnum);
Length=strlen(IDnum);
while (Length!=18) //检查身份证号码是否为十八位
{
printf( "请正确输入您的十八位身份证号码!\n ");
printf( "请输入您的身份证号码: ");
scanf( "%s ",&IDnum);
Length=strlen(IDnum);
}
printf( "请输入您的密码: ");
scanf( "%s ",&code);
Length1=strlen(code);
while (Length1!=6) //验证密码是否为六位
{
printf( "您输入的密码长度错误,请正确输入六位密码!\n ");
printf( "请输入您的密码: ");
scanf( "%s ",&code);
Length1=strlen(code);
}
printf( "请再次输入您的密码: ");
scanf( "%s ",&code1);
while(strcmp(code,code1)!=0) //比较两次输入的密码是否相同
{
printf( "您两次输入的密码不一致,请重新输入!\n ");
printf( "请输入您的密码: ");
scanf( "%s ",&code);
Length1=strlen(code);
while (Length1!=6) //验证密码是否为六位
{
printf( "您输入的密码长度错误,请正确输入六位密码!\n ");
printf( "请输入您的密码: ");
scanf( "%s ",&code);
Length1=strlen(code);
}
printf( "请再次输入您的密码: ");
scanf( "%s ",&code1);
}
printf( "用户开户成功!\n ");
fprintf(userfp, "%s,%s,%s ",&name,&IDnum,&code);
fclose(userfp);
}
//ATM主界面
void main()
{
int select;
scanf( "%d ",&select);
switch(select) {
case 1:Newuser();
break;
default:printf( "请输入正确的选项!\n ");
}
}


[解决办法]
fprintf(userfp, "%s,%s,%s ",&name,&IDnum,&code);
改为:fprintf(userfp, "%s,%s,%s ",name,IDnum,code);

读书人网 >C语言

热点推荐