【自制系列】自制文本编辑器(控制台版本) 第一篇

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 
 5 struct USER{
 6     char name[100];
 7     int password;
 8 }user[10000];
 9 int size=0;
10 
11 int check_user(struct USER u){
12     for(int i=0;i<size;i++){
13         if((strcmp(u.name,user[i].name)==0) && u.password==user[i].password)return 1;
14     }
15     return 0;
16 }
17 
18 int main(void){
19     struct FILE* userinfo;
20     userinfo=fopen("userinfo.txt","r");
21     int i=0;
22     fscanf(userinfo,"%d",&size);
23     for(int i=0;i<size;i++){
24         fscanf(userinfo,"%s %d",user[i].name,&user[i].password);
25         //printf("%s %d\n",user[i].name,user[i].password);
26     }
27     
28     char s[100];
29     struct USER curr_user;
30     int flag=0;//如果当前有用户正在运行标记为1,否则为0 
31     for(;;){
32         putchar('>');
33         scanf("%s",&s);
34         if(strcmp(s,"login")==0){
35             scanf("%s %d",curr_user.name,&curr_user.password);
36             int i=check_user(curr_user);
37             if(!i)printf("密码错误或用户名错误。\n");
38             else{
39                 flag=1;
40             }
41         }
42         else if(strcmp(s,"logoff")==0){
43             flag=0;
44         }
45         else if(strcmp(s,"getuser")==0){
46             if(flag==0)printf("无用户登录\n");
47             else printf("%s\n",curr_user.name);
48         }
49         else{
50             printf("%s不是可执行的指令。\n",s);
51         }
52     }
53 }

 

 

 

功能:

login 用户名 密码  用于登录用户

logoff 用于登出用户

getuser 用于获取当前正在运行的账户

 

 

第一篇比较简单,就不多说了。之后会加入更多的功能,例如打开文档,编辑文档等。

简单的说明:

check_user()用于判断用户名和密码

userinfo.txt用于存放用户名和密码信息,以后增加了”添加账户“功能后,会往里面写入用户信息,现在只有读取的功能

flag用于标记当前是否有用户正在运行

curr_user标记正在运行的用户是哪一个

(getuser指令其实是用来调试的)

posted @ 2021-08-18 11:55  计算机知识杂谈  阅读(146)  评论(0编辑  收藏  举报