【io作业】

1.

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <time.h>

volatile int keepRunning = 1;

void intHandler(int dummy) {
    keepRunning = 0;
}

int main() {
    signal(SIGINT, intHandler); 

    FILE *file = fopen("log.txt", "a"); 

    if (file != NULL) {
        int count = 1;

        while (keepRunning) {
            time_t now = time(NULL);
            struct tm *tm_info = localtime(&now);

            fprintf(file, "%d: %02d-%02d-%02d %02d:%02d:%02d\n", count,
                    tm_info->tm_year + 1900, tm_info->tm_mon + 1, tm_info->tm_mday,
                    tm_info->tm_hour, tm_info->tm_min, tm_info->tm_sec);

            fflush(file); 

            count++;
            sleep(1); 
        }

        fclose(file);
    } else {
        printf("Error opening file.\n");
    }

    return 0;
}

2.

int do_regest()
{
    char regest_name[20];            
    char regest_pwd[20];             
    printf("请输入注册账号:");
    fgets(regest_name, sizeof(regest_name), stdin);
    regest_name[strlen(regest_name) -1] = '\0';       

    printf("请输入注册密码:");
    fgets(regest_pwd, sizeof(regest_pwd), stdin);
    regest_pwd[strlen(regest_pwd) -1] = '\0';      

    FILE *fp = NULL;
    if((fp = fopen("./usr.txt", "a")) == NULL)
    {
        perror("fopen error");
        return -1;
    }

    fprintf(fp,"%s %s\n", regest_name, regest_pwd);

    fclose(fp);

    printf("注册成功\n");
    return 0;
}



int do_login()
{
    char login_name[20];       
    char login_pwd[20];       
    char usr_name[20];        
    char usr_pwd[20];          

    printf("请输入登录账号:");
    fgets(login_name, sizeof(login_name), stdin);
    login_name[strlen(login_name) -1] = '\0';       

    printf("请输入登录密码:");
    fgets(login_pwd, sizeof(login_pwd), stdin);
    login_pwd[strlen(login_pwd) -1] = '\0';       


    FILE *fp = NULL;
    if((fp = fopen("./usr.txt", "r")) == NULL)
    {
        perror("fopen error");
        return -1;
    }

    while(1)
    {
        fscanf(fp,"%s %s", usr_name, usr_pwd); 
        if(strcmp(login_name,usr_name)==0 && strcmp(login_pwd, usr_pwd)==0)
        {
            printf("登录成功\n");
            break;
        }

        if(feof(fp))
        {
            printf("登录失败\n");
            break;
        }
    }


    fclose(fp);
}


int main(int argc, const char *argv[])
{
    int menu = -1;
    while(1)
    {
        system("clear");                        
        printf("\t\t======1、注册======\n");
        printf("\t\t======2、登录======\n");
        printf("\t\t======0、退出======\n");
        printf("请输入选项:");
        scanf("%d", &menu);
        getchar();             
        switch(menu)
        {
        case 1:
            {
                do_regest();
            }
            break;
        case 2:
            {
                do_login();
            }
            break;
        case 0: goto END;
        default:printf("您输入的功能有误请重新输入!!!\n");
        }
        
        printf("请输入任意键结束!!!");
        while(getchar() != '\n');
    }

END:
    return 0;
}

在这里插入图片描述

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值