70,023
社区成员




typedef struct Passenger{
TCHAR Name[16]; //姓名
TCHAR IdNum[32]; //账号
TCHAR PassWord[32]; //密码
struct Passenger *Next;
}Passenger;
typedef struct PsgLinkList{
int PsgNum; //账户数量
Passenger *head; //头结点
Passenger *tail; //尾结点
}PsgLinkList;
FILE *fp;
passenger = (Passenger *)malloc(sizeof(Passenger)); //为登录账户分配内存
if (!passenger){
MessageBox(hwndDlg, TEXT("内存申请错误!"), TEXT("错误"), MB_OK | MB_ICONERROR);
EndDialog(hwndDlg, 0);
return FALSE;
}//if
psglink.head = NULL;
psglink.tail = NULL;
psglink.PsgNum = 0;
if ((fp = fopen(".\\Data.txt", "r")) == NULL){ //打开文件
MessageBox(hwndDlg, TEXT("账户文件读入错误!"), TEXT("错误"), MB_OK | MB_ICONERROR);
EndDialog(hwndDlg, 0);
}//if
while (!feof(fp)){
Passenger *p = (Passenger *)malloc(sizeof(Passenger));
if (!p){
MessageBox(hwndDlg, TEXT("内存申请错误!"), TEXT("错误"), MB_OK | MB_ICONERROR);
EndDialog(hwndDlg, 0);
return FALSE;
}//if
//读入账户信息
fscanf(fp, "%s", p->Name);
fscanf(fp, "%s", p->IdNum);
fscanf(fp, "%s", p->PassWord);
p->Next = NULL;
if (psglink.head == NULL) //读入第一个账户信息时,头、尾结点均指向p
psglink.head = p;
else
psglink.tail->Next = p; //否则,尾结点Next指向p
psglink.tail = p; //尾结点指向p
psglink.PsgNum++; //结点个数增加
}//while
fclose(fp); //关闭文件
Passenger *p;
FILE *fp;
if ((fp = fopen("Data.txt", "w")) == NULL){
MessageBox(hMainDlg, TEXT("账户信息保存出现错误!"), TEXT("错误"), MB_OK | MB_ICONERROR);
return FALSE;
}
p = psglink.head;
while (p){
fprintf(fp, "%s\n", p->Name);
fprintf(fp, "%s\n", p->IdNum);
fprintf(fp, "%s\n", p->PassWord);
p = p->Next;
}//while
fclose(fp);