IOday1

 

 

1.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
    char account[10];
    char password[8];
}user;
//登录
int registe(FILE* name,user *p);
//菜单
int mume(FILE* name,user *p);
//注册
int regist(FILE* name,user *p);
//写入
int entering(user * p);

//菜单
int mume(FILE* name,user *p){
    puts("1.注册\n");
    puts("2.登录\n");
    puts("0.退出\n");
    while(1){
        int sum ;
        printf("需要进行的操作是:\n");
        scanf("%d",&sum);
        switch (sum)
        {
        case 1:
            regist(name,p);
            break;
        case 2:
            registe(name,p);
            break;
        case 0:
            return -1;
        }
    }
}
//注册
int regist(FILE* name,user *p){
    name = fopen("./name.txt","r");
    entering(p);
    char account[10],password[9];
    while(1){
        int res = fscanf(name,"%s %s",account,password);
        if(0 == strcmp(p->account , account)){
            printf("账号已经存在\n");
            return -1;
        }
        if(-1 == res){
            break;
        }    
    }
    fclose(name);
    name = fopen("./name.txt","a+");
    int ret = fprintf(name,"\n%s %s",p->account,p->password);
    printf("%d",ret);
    printf("录入成功\n");
    fclose(name);
    return 0;
}
//登录
int registe(FILE* name,user *p){
    name = fopen("./name.txt","a+");
    entering(p);
    char account[10],password[9];
    int count =0;
    while(fscanf(name,"%s %s",account,password) != -1){
        if(0 == strcmp(p->account , account)){
            count++;
           if(0 == strcmp(p->password,password)){
               printf("登录成功\n");
               return 0;
            }else{
                printf("密码错误\n");
                return -1;
            }
        }
        bzero(account,sizeof(account));
        bzero(password,sizeof(password));
    }
    if(0 == count){
        printf("没有注册账户,请注册账户\n");
    }
    fclose(name);
}
int entering(user * p){
    
    printf("请输入account:");
    scanf("%s",p->account);
    printf("请输入password:");
    scanf("%s",p->password);
}
int main(int argc,const char * argv[])
{
    FILE * name = fopen("./name.txt","a+");
    if(NULL == name){
        perror("fopen");
        return -1;
    }
    user *p = (user*)malloc(sizeof(user));
    mume(name,p);


    fclose(name);
    return 0;
}

录入前

执行时

 

 执行后

 2.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,const char * argv[])
{
    FILE * ef= fopen("02_fscanf.c","r");
    FILE *fe = fopen("02_fscanf.txt","w");
    if(NULL == ef){
        perror("fopen");
        return -1;
    }
    if(NULL == fe){
        perror("fopen");
        return -1;
    }
    char c;
    int count = 0,count1 = 0;
    while(1){
        c = fgetc(ef);
        if(c == -1){
            break;
        }
        printf("%c",c);
        putc(c,fe);
        if(c == '\n'){
            count++;
        }
        count1++;
    }
    printf("文件的大小%d\n",count1);
    printf("文件的行数%d\n",count+1);
    fclose(ef);
    return 0;
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值