9.5作业

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

zhangsan aaaa

lisi bbbb

wangwu cccc

需求如下:

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

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

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

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

#include 

void input_use(char* name, char* pw)
{
    printf("usr:");
    scanf("%s", name);
    printf("pw:");
    scanf("%s", pw);
}

int main(int argc, const char* argv[])
{
    FILE* fp = fopen("./user.txt", "r");
    if (NULL == fp) {
        perror("fopen");
        return -1;
    }

    char in_name[20], in_pw[20];
    char name[20], pw[20];
    int r;

    input_use(in_name, in_pw);

    while (1) {
        r = fscanf(fp, "%s%s", name, pw);
        if (r == EOF) {
            puts("用户不存在!");
            break;
        }
        if (strcmp(name, in_name) == 0) {
            if (strcmp(pw, in_pw) == 0) {
                puts("登录成功!");
                return -1;
            } else {
                puts("密码错误!");
                return -1;
            }
        }
    }

    fclose(fp);
    return 0;
}
y@DESKTOP-1DH5HNK:~/23071/IO/01day/zuoye$ ./a.out 
usr:1
pw:1
用户不存在!
y@DESKTOP-1DH5HNK:~/23071/IO/01day/zuoye$ ./a.out 
usr:aaaaaa
pw:aa
密码错误!
y@DESKTOP-1DH5HNK:~/23071/IO/01day/zuoye$ ./a.out 
usr:bbbbbb
pw:abc
密码错误!
y@DESKTOP-1DH5HNK:~/23071/IO/01day/zuoye$ ./a.out 
usr:aaaaaa
pw:abcd
登录成功!
y@DESKTOP-1DH5HNK:~/23071/IO/01day/zuoye$ cat user.txt 
aaaaaa abcd
bbbbbb bcda
cccccc aaaa
dddddd bbbb
y@DESKTOP-1DH5HNK:~/23071/IO/01day/zuoye$ 

计算一个文件的大小

计算一个文件有几行。

封装成函数

#include 

int get_size(FILE* fp)
{
    int i = 0;
    while (1) {
        if (EOF == fgetc(fp))
            break;
        i++;
    }
    return i;
}
int get_line(FILE* fp)
{
    int i = 0, c;
    while ((c = fgetc(fp)) != EOF) {
        if (10 == c)
            i++;
    }
    return i;
}
int main(int argc, const char* argv[])
{
    FILE* fp = fopen(argv[1], "r");
    if (NULL == fp) {
        perror("fopen");
        return -1;
    }
    printf("size=%d\n", get_size(fp));
    rewind(fp);   
    printf("line=%d\n", get_line(fp));

    fclose(fp);
    return 0;
}
y@DESKTOP-1DH5HNK:~/23071/IO/01day/zuoye$ ./a.out 01exc.c 
size=1070
line=56
y@DESKTOP-1DH5HNK:~/23071/IO/01day/zuoye$ ls -l
total 24
-rw-r--r-- 1 y y 1070 Sep  5 19:30 01exc.c
-rw-r--r-- 1 y y  577 Sep  5 20:04 02exc.c
-rwxr-xr-x 1 y y 8584 Sep  5 20:04 a.out
-rw-r--r-- 1 y y   48 Sep  5 18:22 user.txt
y@DESKTOP-1DH5HNK:~/23071/IO/01day/zuoye$ wc -l 01exc.c 
56 01exc.c

你可能感兴趣的:(linux)