📄 reg.c
字号:
/************************************************/
/* */
/* reg.c */
/* */
/************************************************/
#include <stdio.h>
#include "filsys.h"
#include <string.h>
/* 用户注册函数 */
reg()
{
char regname[USERNAMESIZ], regpsw[PWDSIZ], regpsw2[PWDSIZ];
struct inode * inode;
struct user tempuser[USERNUM];
int i, newid;
inode = iget( 1 );
fseek( fd, DATASTART + BLOCKSIZ * inode->i_addr[0], SEEK_SET );
fread( tempuser, 1, sizeof( struct user ) * USERNUM, fd );
for( newid = 0; newid < USERNUM; newid++)
{
if( strcmp( tempuser[newid].u_name, " " ) == 0 )
break;
}
if( newid == USERNUM )
{
printf( "The system have reach the max users.\n" );
printf( "You can not register now!\n" );
return;
}
/* 输入用户名 */
printf( "Please input your user name(Max 11 characters):\n" );
for( i = 0; i < USERNAMESIZ; i++ )
{
regname[i] = getchar();
if(( regname[i] == '\n' ) || ( i == USERNAMESIZ - 1 ))
{
regname[i] = '\0';
// printf( "\n" );
break;
}
// else
// putch( regname[i] );
}
/* 输入密码 */
printf( "Please input your password(Max 11 characters):\n" );
for( i = 0; i < PWDSIZ; i++ )
{
regpsw[i] = getch();
if( regpsw[i] == '\b' )
{
if( i != 0 )
{
putch( '\b' );
putch( ' ' );
putch( '\b' );
i -= 2;
}
else
i = -1;
}
else
if(( regpsw[i] == '\r' ) || ( i == PWDSIZ - 1 ))
{
regpsw[i] = '\0';
printf( "\n" );
break;
}
else
putch( '*' );
}
/* 再次输入密码 */
printf( "Please input your password again:\n" );
for( i = 0; i < PWDSIZ; i++ )
{
regpsw2[i] = getch();
if( regpsw2[i] == '\b' )
{
if( i != 0 )
{
putch( '\b' );
putch( ' ' );
putch( '\b' );
i -= 2;
}
else
i = -1;
}
else
if(( regpsw2[i] == '\r' ) || ( i == PWDSIZ - 1 ))
{
regpsw2[i] = '\0';
printf( "\n" );
break;
}
else
putch( '*' );
}
/* 检查用户名是否存在 */
for( i = 0; i < newid; i++ )
{
if( strcmp( tempuser[i].u_name, regname ) == 0 )
{
printf( "Sorry! This user have already exited!\n" );
return;
}
}
/* 检查两次输入的密码是否一致 */
if( strcmp( regpsw, regpsw2 ) != 0 )
{
iput( inode );
printf( "Password Incorrect! Can't Register!\n" );
return;
}
strcpy( tempuser[newid].u_name, regname );
strcpy( tempuser[newid].password, regpsw );
tempuser[newid].u_default_mode = NORMALMODE;
tempuser[newid].u_gid = 1;
tempuser[newid].u_uid = newid + 1;
fseek( fd, DATASTART + BLOCKSIZ * inode->i_addr[0], SEEK_SET );
fwrite( tempuser, 1, sizeof( struct user ) * USERNUM, fd );
iput( inode );
printf( "OK! You have register! You can login your accounts!\n" );
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -