#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
if(argc != 3) //判断外部参数
{
printf("The terminal format is incorrect\n");
return -1;
}
//定义文件指针
FILE * fp = NULL;
FILE * fq = NULL;
//以只读的形式打开文件
if((fp = fopen(argv[1],"r")) == NULL)
{
perror("fopen error");
return -1;
}
//以只写的形式打开文件
if((fq = fopen(argv[2],"w")) == NULL)
{
perror("fopen error");
return -1;
}
char buf[100]; //定义一个文件搬运工
while(1)
{
fread(buf, sizeof(buf), 1, fp);
fwrite(buf, sizeof(buf), 1, fq);
if(feof(fp))
{
printf("读取到文件结尾\n");
break;
}
if(ferror(fp))
{
printf("读取失败\n");
break;
}
}
//关闭文件
fclose(fp);
fclose(fq);
printf("拷贝成功\n");
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//定义注册函数
int do_register()
{
//1.以追加形式打开文件
FILE * wfp=NULL;
char userName_reg[20]; //账号
char pwd_reg[20]; //密码
//提示输出注册账号和密码
printf("please enter uesrname:");
fgets(userName_reg,sizeof(userName_reg),stdin);
printf("please enter pwd_reg:");
fgets(pwd_reg,sizeof(pwd_reg),stdin);
//将两个字符串中的换行改成'\0'
userName_reg[strlen(userName_reg)-1]='\0';
pwd_reg[strlen(pwd_reg)-1]='\0';
//打开文件
FILE *rfp = NULL;
if((rfp=fopen("./uer.txt","a+"))==NULL)
{
perror("fopen error");
return -1;
}
//2、将注册账号密码写入文件中 中间隔开,每组换行隔开
fprintf(wfp,"%s %s\n",userName_reg,pwd_reg);
//3、关闭文件
fclose(wfp);
printf("注册成功\n");
return 0;
}
//自定义登录
int do_login()
{
//定义容器存放登录账号和登录密码
char userName_log[20];
char pwd_log[20];
//定义变量存储文件读取的账号和密码
char userName[20];
char pwd[20];
//提示并输入登录账号和密码
printf("please enter 登录账号:");
fgets(userName_log,sizeof(userName_log),stdin);
printf("please enter 登录密码:");
fgets(pwd_log,sizeof(pwd_log),stdin);
//将两个字符串中的换行改成'\0'
userName_log[strlen(userName_log)-1]='\0';
pwd_log[strlen(pwd_log)-1]='\0';
//打开文件,进行账号和密码对比
FILE *rfp = NULL;
if((rfp = fopen("./usr.txt","r")) == NULL)
{
perror("fopen error");
return -1;
}
//循环遍历所有文件中的账户
while(1)
{
int res = fscanf(rfp,"%s %s",userName,pwd); //读取文件中的所有用户
if(res<0)
{
printf("登录失败\n");
//关闭文件
fclose(rfp);
return 1; //表示登录失败
}
//判断登录账号和密码是否匹配
if(strcmp(userName_log,userName)==0 && strcmp(pwd_log,pwd)==0)
{
printf("登录成功\n");
//关闭文件
fclose(rfp);
return 0;
}
}
}
int main(int argc, const char *argv[])
{
char menu; //功能选项
while(1) //重复使用菜单框
{
printf("\t\t====1、注册====\n");
printf("\t\t====2、登录====\n");
printf("\t\t====3、退出====\n");
printf("请输入功能选项:");
scanf("%c",&menu); //读取1
while(getchar() !='\n'); //吸收垃圾字符,垃圾字符空格及回车,清空缓存区
//菜单选项多分支选择
switch(menu)
{
case '1':
{
do_register(); //执行注册
}
break;
case '2':
{
do_login(); //执行登录
}
break;
case '0':
exit(EXIT_SUCCESS); //退出程序
default:printf("enter error\n");
}
printf("请输入任意建按回车清屏\n");
while(getchar()!='\n'); //看见现象
system("clear"); //调用终端指令清屏
return 0;
}
}
图像操作