IO第一天

用fgetc与fputc函数实现:运算符优先级: =号优先级最低。

文件拷贝,例如将1.txt的内容拷贝到2.txt中

要求用fgetc计算一个文件有多少个字节

用fgetc计算一个文件有几行?

#include
#include
#include

int main(int argc, const char *argv[])
{
	FILE* fp_r=fopen("1.txt","r");
	if(NULL == fp_r)
	{
		printf("__%d__\n",__LINE__);
		perror("fopen");
		return -1;
	}
	printf("fopen success\n");
	FILE* fp_w=fopen("2.txt","w+");
	if(NULL == fp_w)
	
	{
		printf("__%d__\n",__LINE__);
		perror("fopen");
		return -1;
	}
	printf("fopen success\n");

	int a=0;
	while(1)
	{
		a=fgetc(fp_r);
		if(EOF==a)
			break;
		fputc(a,fp_w);
	}
    fclose(fp_w);
	fclose(fp_r);

	fp_w=fopen("2.txt","r");
	char c=0;
	int count=0;
	int sum=0;
	while(1)
	{
		c=fgetc(fp_w);
		if(EOF == c)
			break;
		if(c=='\n')
			count++;
		sum++;
	}
	fclose(fp_w);

	printf("row=%d,sizeof=%d\n",count,sum);
	return 0;
}

 

实现登录功能。自定义一个usr.txt,手动输入账户密码,格式如下:账户 密码

例如: zhangsan 12345

lisi abcde

wangwu abc123

需求如下:

从终端获取账户密码,与文件中的账户密码比较

若终端输入的账户不存在,则输出账户不存在

若终端输入的账户存在,但是密码不正确,则输出密码错误

若账户密码均正确,则输出登录成功

#include
#include
#include

int main(int argc, const char *argv[])
{
	FILE* fp=fopen("./usr.txt","r");
	if(NULL == fp)
	{
		perror("fopen");
		return -1;
	}
	printf("fopen success\n");

	char a[20]="";
	char b[20]="";
	printf("请输入账号:");
	scanf("%s",a);

	char c[50]="";
	char d[50]="";
	while(1)
	{
	    int res1 = fscanf(fp,"%s",c);
		int res2 = fscanf(fp,"%s",d);
		if(EOF==res1||EOF==res2)
			break;
		if(strcmp(c,a)==0)
		{
           printf("请输入密码:");
		   scanf("%s",b);
		   if(strcmp(d,b)==0)
		   {
			   printf("登录成功\n");
			   break;
		   }
		   else
		   {
			   printf("密码错误\n");
			   break;
		   }
		}else
		{
			printf("账号错误\n");
			break;
		}
	}
	fclose(fp);

	return 0;
}

 

你可能感兴趣的:(linux)