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

思维导图

相关推荐
longlongzihan4 小时前
LeetCode 17电话号码的字母组合:回溯算法(DFS)详解
c++·算法·leetcode·深度优先
心之语歌4 小时前
Tkinter 画布基本梳理
运维·服务器·python
封印师请假去地球钓鱼4 小时前
边解边变的问题:从“决策依赖“一词出发
人工智能·算法
Shulex5 小时前
面向跨境电商多渠道消息系统的技术架构:亚马逊站内信合规对接与自动化执行链路设计
运维·架构·自动化
今晚打老虎5 小时前
c++之提高A(前缀和)(第三课)
数据结构·c++·算法
bloglin999995 小时前
vmware部署centos7启动docker容器后无法访问服务
运维·docker·容器
夜听莺儿鸣5 小时前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP6 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
不会就选b6 小时前
算法日常・每日刷题--<贪心>26
数据结构·算法
梦帮科技6 小时前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化