ClionDay10

Demo

#include <stdio.h>

#include <stdlib.h>

/**

1.密码:  设置密码  更改密码 输入密码

*/

//读取密码

char *loadPassword(char *filePath);

int main() {

    char *file_dirctory = "/Users/pengxiaodong/Desktop/atm.txt";

    //保存密码

    char *org_password = loadPassword(file_dirctory);

    if (org_password == NULL){

        //设置密码

        printf("请设置密码\n");

    }else{

        //输入密码

        printf("请输入密码\n");

    }

    return 0;

}

//读取密码

char *loadPassword(char *filePath){

    //打开或者创建文件

    FILE *fp = fopen(filePath,"a+");

    //移动文件指针到开头

    fseek(fp,0,SEEK_SET);

    //读取内容

    char *pwd = NULL;

    int index = 0;

    while (1){

        //从文件读取内容

        char c = fgetc(fp);

        //判断是不是文件的末尾

        if (c == EOF){

            break;

        }

        //判断是不是第一个字符

        if (index == 0){

            //malloc

            pwd = (char *)malloc(1*sizeof(char));

            if (pwd == NULL){

                exit(EXIT_FAILURE);

            }

        }else{

            char *pTemp = realloc(pwd,(index+1)*sizeof(char));

            if (pTemp == NULL){

                free(pwd);

                exit(EXIT_FAILURE);

            }

            pwd = pTemp;

        }

        //保存当前读取的字符

        pwd[index] = c;

        index++;

    }

    //返回当前的首地址

    return pwd;

}



#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <stdbool.h>

/**

1.密码:  设置密码  更改密码 输入密码

*/

//读取密码

char *loadPassword();

//设置密码

void setPassword(char **old);

//检查密码

bool checkPassword(char *old);

//全局变量 (作用域:整个文件main.c

char *file_dirctory = "/Users/pengxiaodong/Desktop/atm.txt";

int main() {

    //保存密码

    char *org_password = NULL;

    org_password = loadPassword();

    if (org_password == NULL){

        //设置密码

        setPassword(&org_password);

    }else{

        //输入密码

        int result = checkPassword(org_password);

        if (result == true){

            printf("解锁成功!!!\n");

        } else{

            exit(EXIT_FAILURE);

        }

    }

    return 0;

}

//malloc分配内存空间

char *myMalloc(int count){

    char *pTemp = (char *)malloc(count*sizeof(char));

    if (pTemp == NULL){

        exit(EXIT_FAILURE);

    }

    return pTemp;

}

//realloc分配内存空间

char *myRealloc(char *old,int count){

    char *pTemp = realloc(old,count*sizeof(char));

    if (pTemp == NULL){

        free(old);

        exit(EXIT_FAILURE);

    }

    return pTemp;

}

//读取密码

char *loadPassword(){

    //打开或者创建文件

    FILE *fp = fopen(file_dirctory,"a+");

    //移动文件指针到开头

    fseek(fp,0,SEEK_SET);

    //读取内容

    char *pwd = NULL;

    int index = 0;

    while (1){

        //从文件读取内容

        char c = fgetc(fp);

        //判断是不是文件的末尾

        if (c == EOF){

            break;

        }

        //判断是不是第一个字符

        if (index == 0){

            //malloc

            pwd = myMalloc(1);

        }else{

            pwd = myRealloc(pwd,index+1);

        }

        //保存当前读取的字符

        pwd[index] = c;

        index++;

    }

    fclose(fp);

    //返回当前的首地址

    return pwd;

}

//从终端一个一个字符获取字符串

char *myScanf(){

    char *pInput = NULL;

    int index = 0;

    while (1){

        char ch = getchar();

        if (ch == '\n'){

            break;

        }

        if (index == 0){

            pInput = myMalloc(1);

        }else{

            pInput = myRealloc(pInput,index+1);

        }

        pInput[index] = ch;

        index++;

    }

    return pInput;

}

//保存数据

void savePassword(char *pwd){

    FILE *fp = fopen(file_dirctory,"w");

    fputs(pwd,fp);

    fclose(fp);

}

void inputNewPassword(char **old){

    printf("请输入新密码:");

    //接收用户输入

    char *input_pwd = myScanf();

    //保存到文件

    savePassword(input_pwd);

    //改变外部的值

    *old = input_pwd;

    printf("设置密码成功!!!\n");

}

//设置密码

void setPassword(char **old){

    //判断是否有密码

    if (*old == NULL){

        inputNewPassword(old);

    }else{

        while(1){

            printf("请输入原始密码:");

            char *input = myScanf();

            int result = strcmp(*old, input);

            //需要释放内存空间

            free(input);

            if (result != 0){

                printf("密码错误 ");

            }else{

                break;

            }

        }

        inputNewPassword(old);

    }

}

//检查密码

bool checkPassword(char *old){

    int total = 4;

    while (1){

        printf("请输入密码:");

        char *input = myScanf();

        int result = strcmp(old,input);

        if (result == 0){

            return true;

        }else{

            total--;

            if (total == 0){

                printf("错误次数过多 请联系管理员!!\n");

                return false;

            }else{

                printf("密码错误 ");

            }

        }

    }

}


完整

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <stdbool.h>

/**

1.密码: 设置密码 更改密码 输⼊密码

*/

//读取密码

char *loadPassword();

//设置密码

void setPassword(char **old);

//检查密码

bool checkPassword(char *old);

//接收⽤户的选择

int chooseOperation(int min, int max);

//显示操作界⾯

void showHome();

//退出

void saveExit(char *pwd);

//查询余额

void showMoney();

//是否继续

void shouldContinue();

//存款

void saveMoney();

//取款

void getMoney();

//全局变量 (作⽤域:整个⽂件main.c

char *fifile_dirctory = "/Users/pengxiaodong/Desktop/atm.txt";

int totalMoney = 10000;

char *org_password = NULL;

int main() {

//保存密码

org_password = loadPassword();

if (org_password == NULL){

//设置密码

setPassword(&org_password); }else{

//输⼊密码

int result = checkPassword(org_password);

if (result == true){//密码正确

while (1) {

//展示主⻚⾯

showHome();

//接收选择

int choice = chooseOperation(1,5);

switch (choice) {

case 1:

setPassword(&org_password);

break;

case 2:

getMoney();

break;

case 3:

saveMoney();

break;

case 4:

showMoney();

break;

case 5:

saveExit(org_password);

break;

}

shouldContinue();

}

} else{

exit(EXIT_FAILURE);

}

}

return 0;

}

//malloc分配内存空间

char *myMalloc(int count){

char *pTemp = (char *)malloc(count*sizeof(char));

if (pTemp == NULL){

exit(EXIT_FAILURE);

}

return pTemp;}

//realloc分配内存空间

char *myRealloc(char *old,int count){

char *pTemp = realloc(old,count*sizeof(char));

if (pTemp == NULL){

free(old);

exit(EXIT_FAILURE);

}

return pTemp;

}

//读取密码

char *loadPassword(){

//打开或者创建⽂件

FILE *fp = fopen(fifile_dirctory,"a+");

//移动⽂件指针到开头

fseek(fp,0,SEEK_SET);

//读取内容

char *pwd = NULL;

int index = 0;

while (1){

//从⽂件读取内容

char c = fgetc(fp);

//判断是不是⽂件的末尾

if (c == EOF){

break;

}

//判断是不是第⼀个字符

if (index == 0){

//malloc

pwd = myMalloc(1);

}else{

pwd = myRealloc(pwd,index+1);

}

//保存当前读取的字符

pwd[index] = c;

index++;

}

fclose(fp); //返回当前的⾸地址

return pwd;

}

//从终端⼀个⼀个字符获取字符串

char *myScanf(){

char *pInput = NULL;

int index = 0;

fflflush(stdin);

while (1){

char ch = getchar();

if (ch == '\n'){

break;

}

if (index == 0){

pInput = myMalloc(1);

}else{

pInput = myRealloc(pInput,index+1);

}

pInput[index] = ch;

index++;

}

return pInput;

}

//保存数据

void savePassword(char *pwd){

FILE *fp = fopen(fifile_dirctory,"w");

fputs(pwd,fp);

fclose(fp);

}

void inputNewPassword(char **old){

printf("请输⼊新密码:");

//接收⽤户输⼊

char *input_pwd = myScanf();

//保存到⽂件

savePassword(input_pwd);

//改变外部的值

*old = input_pwd;

printf("设置密码成功!!!\n");}

//设置密码

void setPassword(char **old){

//判断是否有密码

if (*old == NULL){

inputNewPassword(old);

}else{

while(1){

printf("请输⼊原始密码:");

char *input = myScanf();

int result = strcmp(*old, input);

//需要释放内存空间

free(input);

if (result != 0){

printf("密码错误 ");

}else{

break;

}

}

inputNewPassword(old);

}

}

//检查密码

bool checkPassword(char *old){

int total = 4;

while (1){

printf("请输⼊密码:");

char *input = myScanf();

int result = strcmp(old,input);

if (result == 0){

printf("解锁成功!!!\n");

return true;

}else{

total--;

if (total == 0){

printf("错误次数过多 请联系管理员!!\n");

return false;

}else{

printf("密码错误 ");

} }

}

}

//显示操作界⾯

void showHome(){

printf("*************************\n");

printf("1. 更改密码\n");

printf("2. 取款\n");

printf("3. 存款\n");

printf("4. 查询\n");

printf("5. 退出\n");

printf("*************************\n");

}

//接收⽤户的选择

int chooseOperation(int min, int max){

int choice = 0;

while (1) {

printf("请选择操作:");

scanf("%d", &choice);

if (choice >= min && choice <= max) {

return choice;

} else {

printf("输⼊不合法 ");

}

}

}

//退出

void saveExit(char *pwd){

free(pwd);

printf("欢迎下次使⽤!!!\n");

exit(EXIT_SUCCESS);

}

//查询余额

void showMoney(){

printf("当前余额为:%d\n", totalMoney);

}//是否继续

void shouldContinue(){

while (1) {

fflflush(stdin);

printf("是否继续(y/n) ?:");

char ch = getchar();

if (ch == 'n') {

saveExit(org_password);

} else {

if (ch != 'y') {

printf("输⼊不合法 ");

}else{

break;

}

}

}

}

//存款

void saveMoney(){

int money = 0;

printf("请输⼊存款⾦额:");

scanf("%d", &money);

totalMoney += money;

printf("存款成功 余额为:%d\n", totalMoney);

}

//取款

void getMoney(){

int money = 0;

while (1) {

printf("请输⼊取款⾦额:");

scanf("%d", &money);

if (money > totalMoney) {

printf("当前余额不⾜");

}else{

totalMoney -= money;

printf("取款成功 余额为:%d\n", totalMoney);

break;

}

}}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • 基础: id:查看当前用户的信息 passwd:修改当前用户密码 whoami:显示当前用户 who:显示当前登录...
    以后要奋斗阅读 584评论 0 1
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,046评论 3 53
  • 不支持上传文件,所以就复制过来了。作者信息什么的都没删。对前端基本属于一窍不通,所以没有任何修改,反正用着没问题就...
    全栈在路上阅读 1,958评论 0 2
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,520评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,562评论 0 11