1.实现登录功能
自定义一个usr.txt,手动输入账户密码,格式如下: 账户 密码例如:
zhangsan 12345
lisi abcde
wangwu abc123
需求如下:
a. 从终端获取账户密码,与文件中的账户密码比较
b. 若终端输入的账户不存在,则输出账户不存在
c. 若终端输入的账户存在,但是密码不正确,则输出密码错误d。若账户密码均正确,则输出登录成功
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./usr.txt","r");
if(NULL==fp){
perror("fopen");
return -1;
}
char line[40];
char inputUsername[100];
char inputPassword[100];
char username[100];
char password[100];
scanf("%s %s",inputUsername,inputPassword);
printf("inputMsg=%s %s\n",inputUsername,inputPassword);
//循环从文件中拿用户名和密码
int flag=0;
while(1){
//将用户名和密码分别取出来
int res1=fscanf(fp,"%s",username);
int res2=fscanf(fp,"%s",password);
if(res1==-1||res2==-1){
break;
}
// sscanf(line,"%s %s",username,password);
//分别进行比较
if(strcmp(inputUsername,username)==0){
flag=1;
if(strcmp(inputPassword,password)==0){
printf("登录成功\n");
break;
}else{
printf("密码错误\n");
break;
}
}
}
if(flag==0){
printf("账户不存在\n");
}
return 0;
}
2.计算一个文件的大小,请封装成函数
#include <stdio.h>
#include <errno.h>
int Size(FILE* fp)
{
int len=0;
while(-1!=fgetc(fp)){
len++;
}
return len;
}
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./02.c","r");
if(NULL==fp)
{
perror("fopen");
return -1;
}
int size=Size(fp);
printf("size:%d\n",size);
return 0;
}
3.用fgets和fputs实现文件拷贝
#include <stdio.h>
#include <errno.h>
void copy(FILE* fp1,FILE* fp2)
{
char str[10];
while(NULL!=fgets(str,sizeof(str),fp1)){
fputs(str,fp2);
}
return;
}
int main(int argc, const char *argv[])
{
FILE* fp1=fopen("./01.c","r");
FILE* fp2=fopen("./02.c","w");
copy(fp1,fp2);
return 0;
}