作业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