📄 user.c
字号:
/* user.c - user */
/* Copyright (c) 2007 Alpha Networks, Inc. */
/** modification history** 07/02/2007, created by Ped
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lstLib.h"
#include "user.h"
static USER *userGet(LIST *pUserList, char *pUserName)
{
USER *pUser;
for(pUser = (USER *)lstFirst(pUserList);
pUser != NULL;
pUser = (USER *)lstNext((NODE *)pUser))
{
if(strcmp(pUser->name, pUserName) == 0)
return pUser;
}
return NULL;
}
/* return 0 success, -1 fail */
static int userAdd(LIST *pUserList, char *pUserName)
{
USER *pUser;
int ret = -1;
if(userGet(pUserList, pUserName) != NULL)
{
printf("USER: user %s already exist\n", pUserName);
goto end;
}
pUser = (USER *)calloc(1, sizeof(USER));
if(pUser == NULL) {
printf("USER: error to get memory\n");
goto end;
}
strcpy(pUser->name, pUserName);
lstAdd(pUserList, (NODE *)pUser);
ret = 0;
end:
return ret;
}
/* return 0 success, -1 fail */
static int userDelete(LIST *pUserList, char *pUserName)
{
USER *pUser;
int ret = -1;
pUser = userGet(pUserList, pUserName);
if(pUser == NULL)
{
printf("USER: no user %s\n", pUserName);
goto end;
}
lstDelete(pUserList, (NODE *)pUser);
free(pUser);
ret = 0;
end:
return ret;
}
/* pUserName == NULL, show all user, else show the particular user */
static void userShow(LIST *pUserList, char *pUserName)
{
USER *pUser;
if(pUserName != NULL)
{
pUser = userGet(pUserList, pUserName);
if(pUser == NULL)
printf("USER: no user %s\n", pUserName);
else
printf("user %s\n", pUserName);
return;
}
/* show all user */
for(pUser = (USER *)lstFirst(pUserList);
pUser != NULL;
pUser = (USER *)lstNext((NODE *)pUser))
{
printf("user %s\n", pUser->name);
}
}
static void userUsage()
{
printf("User usage:\n");
printf(" 1 - add an user\n");
printf(" 2 - delete an user\n");
printf(" 3 - show an user\n");
printf(" 4 - show all user\n");
printf(" 5 - quit\n");
}
int main(int argc, char **argv)
{
LIST userList;
int choice;
char userName[MAX_USER_NAME_LEN];
lstInit(&userList);
userUsage();
printf("?");
scanf("%d", &choice);
while(choice != 5)
{
switch(choice) {
case 1:
printf("Enter user name:");
scanf("%s", userName);
userAdd(&userList, userName);
break;
case 2:
printf("Enter user name:");
scanf("%s", userName);
userDelete(&userList, userName);
break;
case 3:
printf("Enter user name:");
scanf("%s", userName);
userShow(&userList, userName);
break;
case 4:
userShow(&userList, NULL);
break;
default:
printf("Invalid choice. \n");
userUsage();
break;
}
printf("?");
scanf("%d", &choice);
}
printf("End of run.\n");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -