用fgetc与fputc函数实现
1、文件拷贝,例如将7.txt的内容拷贝到8.txt中
2、要求用fgets计算一个文件有多少字节
3、用fgetc计算一个文件有几行
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
char s=0,n=0;
int count=0;
FILE *fp1=fopen("./7.txt","w");
FILE *fp2=fopen("./8.txt","w");
if(NULL==fp1)
{
perror("fp");
return -1;
}
printf("fopen success\n");
if(NULL==fp2)
{
perror("fp");
return -1;
}
printf("fopen success\n");
fputc('4',fp1);
fputc('a',fp1);
fputc('b',fp1);
fputc('\n',fp1);
fputc('\n',fp1);
fputc('c',fp1);
fputc('\n',fp1);
fclose(fp1);
fp1=fopen("./7.txt","r");
while((s=fgetc(fp1))!=EOF)
{
if('\n'==s)
n++;
fputc(s,fp2);
count++;
}
if(fclose(fp1)<0)
{
printf("fclose erro");
return -1;
}
if(fclose(fp2)<0)
{
printf("fclose erro");
return -1;
}
printf("有%d字节\n",count);
printf("有%d行\n",n+1);
return 0;
}
实现登录功能。自定义一个usr.txt,手动输入账户密码,格式如下:账户 密码
例如: zhangsan 12345
lisi abcde
wangwu abc123
需求如下:
从终端获取账户密码,与文件中的账户密码比较
若终端输入的账户不存在,则输出账户不存在
若终端输入的账户存在,但是密码不正确,则输出密码错误
若账户密码均正确,则输出登录成功
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
FILE *fp=fopen("./usr.txt","w");
if(NULL==fp)
{
perror("fp");
printf("文件不存在\n");
return -1;
}
printf("文件存在\n");
fprintf(fp,"zhangsan 12345\nlisi abcde\nwangwu abc123");
if(fclose(fp)<0)
{
printf("fclose fall");
return -1;
}
printf("fclose success\n");
char s[20]="";
char q[20]="";
char z[20]="";
char m[20]="";
fp=fopen("./usr.txt","r");
printf("输入账户:");
scanf("%s",s);
while(fscanf(fp,"%s",z)!=EOF)
{
if(strcmp(s,z)==0)
{
fscanf(fp,"%s",m);
printf("输入密码:");
scanf("%s",q);
if(strcmp(q,m)==0){
printf("登录成功\n");
if(fclose(fp)<0)
{
printf("fclose fall");
return -1;
}
printf("fclose success\n");
return 0;
}
else
{
printf("密码错误\n");
if(fclose(fp)<0)
{
printf("fclose fall");
return -1;
}
printf("fclose success\n");
return -1;
}
}
}
printf("账户不存在\n");
if(fclose(fp)<0)
{
printf("fclose fall");
return -1;
}
printf("fclose success\n");
return 0;
}