1.实现登录功能。自定义- -个usr.txt,手动输入账户密码,格式如下:账户密码
例如: zhangsan 12345
lisi abcde
wangwu abc123
需求如下:
a.从终端获取账户密码,与文件中的账户密码比较
b.若终端输入的账户不存在,则输出账户不存在
c.若终端输入的账户存在,但是密码不正确,则输出密码错误
d.若账户密码均正确,则输出登录成功
int main(int argc, const char *argv[])
{
FILE * a = fopen("./usr.txt", "w");
if(a == NULL)
{
perror("./login.c");
return -1;
}
else
{
printf("文件打开成功\n");
}
fprintf(a,"zhangsan\n");
fprintf(a,"123456\n");
// printf("%ld\n", a->_IO_buf_end - a->_IO_buf_base);
fclose(a);
///加入密码账户
a = fopen("./usr.txt", "r");
/// 输入账号
char s[20] = "";
printf("请输入账号\n");
scanf("%s", s);
char z[20];
fscanf(a,"%s", z);//获得文件的内容
int sum = strcmp(s,z);//比较
if(sum != 0)
{
printf("账号错误\n");
}
else{
char s2[20] = "";
printf("请输入密码\n");//输入密码
scanf("%s", s2);
char b[20];
fscanf(a,"%s", b);//获得文件内容
sum = strcmp(s2,b);
if(sum != 0)
{
printf("密码错误\n");
}
else
{
printf("登录成功\n");
}
}
fclose(a);
return 0;
}
现象
2.计算一个文件的大小,请封装成函数。
函数
#include <stdio.h>
int sizefile(FILE * a)
{
char c = 0;
int i = 0;
while(1)
{
c = fgetc(a);
i++;
if(c == EOF)
{
break;
}
printf("%c", c);
}
putchar(10);
printf("%d\n", i-1);
}
int main(int argc, const char *argv[])
{
FILE * p = fopen("./01.txt", "r");
sizefile(p);
fclose(p);
return 0;
}
现象
用fgets和fputs实现文件拷贝
函数
#include <stdio.h>
int main(int argc, const char *argv[])
{
FILE * ph = fopen("./04.txt", "w");
FILE * qh = fopen("./01.txt", "r");
char str[5] = "";
while(fgets(str,sizeof(str), qh) != NULL)
{
fputs(str,ph);
}
return 0;
}
现象