IO进程线程day1

作业1:

手动创建一个usr.txt文件,其中存储用户的账户密码,一行一个账户密码,中间用空格隔开。例如:

zhangsan aaaa

lisi bbbb

wangwu cccc

需求如下:

从终端获取一个账户,密码。判断该账户密码是否正确

若账户不存在,则输出账户不存在

若账户存在,密码错误,则输出密码错误

若账户密码均正确,则输出登录成功。

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

int main(int argc, const char *argv[])                                                   
{
    char get_name[20] = "", get_passwd[20] = "";
    char file_name[20] = "", file_passwd[20] = "";


    //从终端获取账户密码
    printf("请输入账户和密码>>> ");
    scanf("%s %s", get_name, get_passwd);

    //以读的方式打开文件
    FILE* fp = fopen("./usr.txt", "r");
    if(NULL == fp)
    {
        perror("fopen");
        return -1;
    }

    //循环读取文件的一行:账户  密码
    while(1)
    {
        //将字符串清空
        bzero(file_name, sizeof(file_name));
        bzero(file_passwd, sizeof(file_passwd));

        if(fscanf(fp, "%s %s", file_name, file_passwd) == EOF)
        {
            printf("%s 用户不存在\n", get_name);
            break;
        }
    //  printf("%s %s\n", file_name, file_passwd);

        //与终端获取到的账户密码比较
        if(strcmp(file_name, get_name) != 0)    //若账户名不相同,则去获取下一个账户密码
            continue;

        if(strcmp(file_passwd, get_passwd) != 0)
        {
            printf("%s 密码错误\n", get_name);
        }
        else
        {
            printf("%s 用户登录成功\n", get_name);
        }

        break;      //若账户相同,则不需要继续往后比较其他用户了
    }

    //关闭文件
    fclose(fp);

    return 0;
}

作业2:

计算一个文件的大小

计算一个文件有几行。

封装成函数

#include <stdio.h>
#include <head.h>


int main(int argc, const char *argv[])
{
    FILE* fp_r = fopen("./01_fopen.c", "r");                          
    if(NULL == fp_r)
    {
        ERR_MSG("fopen");
        return -1;
    }

    //循环读取,统计字节数

    char str[20] = "";
    int count = 0;
    while(1)
    {
        if(fgets(str, sizeof(str), fp_r) == NULL)
            break;

        count+=strlen(str);     //fgets停止读取后会自动在结尾补充\0
    }
    printf("count = %d\n", count);


    if(fclose(fp_r) < 0)
    {
        ERR_MSG("fclose");
        return -1;
    }


    return 0;
}

作业3:XMID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值