1.请用fscanf和fprintf实现文件拷贝。 (fputc和fgetc)
2.实现登录功能。自定义一个usr.txt,手动输入账户密码,格式如下:账户 密码
例如: zhangsan 12345
lisi abcde
wangwu abc123
需求如下:
从终端获取账户密码,与文件中的账户密码比较
若终端输入的账户不存在,则输出账户不存在
若终端输入的账户存在,但是密码不正确,则输出密码错误
若账户密码均正确,则输出登录成功
#include <stdio.h>
int main(int argc, const char *argv[])
{
//判断命令行是否传参
if(argc<2)
{
printf("命令行未传参,请输入文件名");
return -1;
}
//以读的形式打开文件
FILE* MAX = fopen(argv[1],"r");
//判断MAX是否为空
if(NULL == MAX)
{
perror("floen");
return -1;
}
//int sizf存储文件的大小
int sizf = 0;
char c;
//循环读取文件中的单个字符并判断文件是否读取完毕
//scanf中的%s,%d,%f不会获取换行,空格,制表符
// %c可以获取换行,空格,制表符
FILE* ppt = fopen("./mont.txt","w");
while(fscanf(MAX,"%c",&c)!=EOF)
{
fprintf(ppt,"%c",c);
sizf++;
}
printf("拷贝成功\n");
//打印文件大小
printf("sizf=%d\n",sizf);
fclose(ppt);
fclose(MAX);
return 0;
}
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
FILE*max = fopen("./pasword.txt","w");
if(NULL == max)
{
perror("fopen");
return -1;
}
printf("请输入账号和密码\n");
char num[20] = "";
char main[20] = "";
scanf("%s %s",num,main);
getchar();
fprintf(max,"%s %s",num,main);
fclose(max);
FILE*pb=fopen("./pasword.txt","r");
if(pb==NULL)
{
printf("创建失败\n");
perror("fopen");
return -1;
}
char arr[20],str[20];
fscanf(pb,"%s %s",arr,str);
fflush(pb);
printf("请输入账号和密码\n");
char arr1[20],brr[20];
scanf("%s %s",arr1,brr);
int a,b;
a=strcmp(arr,arr1);
b=strcmp(str,brr);
if(a!=0)
{
printf("账号错误\n");
return -1;
}
else if(a==0)
{
printf("账号正确\n");
}
if(b!=0)
{
printf("密码错误\n");
return -1;
}
else if(b==0)
{
printf("密码正确\n");
}
printf("登录成功\n");
fclose(pb);
}