2024.12.09标准IO(作业)

1、使用这fscanf和fprintf两个函数实现文件的拷贝。

复制代码
#include <myhead.h>

int main(int argc, const char *argv[])
{
	//使用这fscanf和fprintf两个函数实现文件的拷贝
	FILE *fp1 = fopen("./1.txt","r"); 	//打开被拷贝的文件1.txt
	if(NULL== fp1)
	{
		perror("fopen1");
		return -1;
	}
	FILE *fp2 = fopen("./2.txt","w"); 	//只写的方式打开
	if(NULL == fp2)
	{
		perror("fopen2");
		return -1;
	}
	char buff[1024];
	while(EOF != fscanf(fp1,"%1023s",buff)) 	//限制打小,防止溢出
	{
		fprintf(fp2,"%s\n",buff); 				//保持换行一致
	}
	fclose(fp1);
	fclose(fp2);
	return 0;
}

2、fwrite和fread实现文件拷贝。

复制代码
#include <myhead.h>

int main(int argc, const char *argv[])
{
	FILE *fp1,*fp2;
	fp1 = fopen("./1.txt","r");
	if(NULL == fp1)
	{
		perror("fp1");
		return -1;
	}
	fp2 = fopen("./2.txt","w");
	if(NULL == fp2)
	{
		perror("fp2");
		return -1;
	}
	int res;
	char buff[1024];
	while(res = fread(buff,1,sizeof(buff),fp1)!=0)
	{
		fwrite(buff,res,sizeof(buff),fp2);
	}
	fseek(fp1,SEEK_CUR,-1024);
	bzero(buff,sizeof(buff));
	fread(buff,sizeof(buff),1,fp1);
	fwrite(buff,sizeof(buff),1,fp2);
	fclose(fp1);
	fclose(fp2);

	return 0;
}

3、登录注册实现一遍。

复制代码
#include"fun.h"
int main(int argc, const char *argv[])
{
    int ch;
    printf("argc = %d\targv[0] = %s\tagrv[1] = %s\n",argc,argv[0],argv[1]);
    if(argc!=2)
    {
        printf("参数错误\n");
        return -1;
    }
    while(1)
    {
        printf("\t\t\t1、注册\n");
        printf("\t\t\t2、登录\n");
        printf("\t\t\t0、退出\n");
        printf("请输入你的选择:");
        scanf("%d",&ch);
        getchar();//吸收回车
        switch(ch)
        {
            case 1:
            regist(argv[1]);//注册函数
            break;
            case 2:
            login(argv[1]);//登录函数
            break;
            case 0:
            exit(EXIT_SUCCESS);//成功退出
            //exit(EXIT_FAILURE);//失败退出
            break;
            default:
            printf("输入有误请重新输入\n");
        }
    }
    return 0;
}



#include"fun.h"
int regist(const char *File)
{
    char name[20],code[20];
    printf("请输入注册账户:");
    fgets(name,sizeof(name),stdin);//输入账户
    printf("请输入注册密码:");
    fgets(code,sizeof(code),stdin);//输入密码
    name[strlen(name)-1] = '\0';
    code[strlen(code)-1] = '\0';
    
    FILE *fp = fopen(File,"a");//追加写的方式写入文件
    if(fp==NULL)
    {
        perror("fopen");
        return -1;
    }
    fprintf(fp,"%s %s ",name,code);//将账户密码写入文件
    fclose(fp);//关闭文件
    return 0;
}
int login(const char *File)
{
    char dname[20],dcode[20];//存储输入的账户密码
    char name[20],code[20];//存储读取的账户密码
    printf("请输入登录账户:");
    fgets(dname,sizeof(dname),stdin);//输入账户
    printf("请输入登录密码:");
    fgets(dcode,sizeof(dcode),stdin);//输入密码
    dname[strlen(dname)-1] = '\0';
    dcode[strlen(dcode)-1] = '\0';
    

    //循环读取文件内容与账户密码匹配
    FILE *fp = fopen(File,"r");//只读方式打开
    if(fp==NULL)
    {
        perror("fopen");
        return -1;
    }
    int flag=0;
    while(1)
    {
        int res = fscanf(fp,"%s %s",name,code);//读取到的账户密码
        if(res==EOF)//读取到文件末尾退出
        {
            break;
        }
        if(strcmp(dname,name)==0&&strcmp(dcode,code)==0)
        {
            printf("登录成功!!!\n");
            flag=1;
            return 0;
        }
    }
    if(flag==0)
    {
        printf("登录失败,请重新输入\n");
    }
    fclose(fp);//关闭文件
    return 0;
}


#ifndef _FUN_H_
#define _FUN_H_
#include<myhead.h>
int regist(const char *);
int login(const char *);
#endif

思维导图

相关推荐
sali-tec35 分钟前
C# 基于halcon的视觉工作流-章56-彩图转云图
人工智能·算法·计算机视觉·c#
七七七七071 小时前
【计算机网络】深入理解ARP协议:工作原理、报文格式与安全防护
linux·服务器·网络·计算机网络·安全
守城小轩1 小时前
轻量级HTTP&Socks代理GOST: Linux编译安装
运维·网络·网络协议
奋斗的蛋黄3 小时前
网络卡顿运维排查方案:从客户端到服务器的全链路处理
运维·服务器·网络
wanhengidc4 小时前
云手机搬砖 尤弥尔传奇自动化操作
运维·服务器·arm开发·安全·智能手机·自动化
黑岚樱梦4 小时前
代码随想录打卡day23:435.无重叠区间
算法
lhxcc_fly4 小时前
Linux网络--8、NAT,代理,网络穿透
linux·服务器·网络·nat
摇滚侠4 小时前
Spring Boot3零基础教程,Spring Boot 应用打包成 exe 可执行文件,笔记91 笔记92 笔记93
linux·spring boot·笔记
Kuo-Teng5 小时前
Leetcode438. 找到字符串中所有字母异位词
java·算法·leetcode
wow_DG5 小时前
【运维✨】云服务器公网 IP 迷雾:为什么本机看不到那个地址?
运维·服务器·tcp/ip