标准IO输入输出

embedded/2024/10/18 10:29:05/

1、完成标准io的单字符、字符串、格式化、模块化实现两个文件的拷贝;

//单字符拷贝
#include <myhead.h>
int main(int argc, const char *argv[])
{//判断是否有3个文件传入if(3 != argc){fputs("input file error:",stderr);return -1;}//判断源文件是否打开成功FILE * sfp = fopen(argv[1],"r");if(sfp == 0){perror("fopen sfp error");return -1;}//判断目标文件是否打开成功FILE * dfp = fopen(argv[2],"w");if(dfp == 0){perror("fopen dsp error");return -1;}//拷贝while(1){printf("%d\n", ftell(sfp));int res = fgetc(sfp);if(feof(sfp)){printf("%d\n", ftell(sfp));break;}//	if(res == EOF){//	break;//	}fputc(res,dfp);}//关闭源文件、目标文件fclose(sfp);fclose(dfp);return 0;
}
//字符串拷贝
#include <myhead.h>
int main(int argc, const char *argv[])
{//判断是否有3个文件传入if(3 != argc){fputs("input file error:",stderr);return -1;}//判断源文件是否打开成功FILE * sfp = fopen(argv[1],"r");if(sfp == 0){perror("fopen sfp error");return -1;}//判断目标文件是否打开成功FILE * dfp = fopen(argv[2],"w");if(dfp == 0){perror("fopen dsp error");return -1;}//拷贝char tg[10] = "";while(1){char * res = fgets(tg,sizeof(tg),sfp);if( res == 0 ){break;}fputs(tg,dfp);}//关闭源文件、目标文件fclose(sfp);fclose(dfp);return 0;
}
//格式符拷贝
#include <myhead.h>
int main(int argc, const char *argv[])
{//判断是否有3个文件传入if(3 != argc){fputs("input file error:",stderr);return -1;}//判断源文件是否打开成功FILE * sfp = fopen(argv[1],"r");if(sfp == 0){perror("fopen sfp error");return -1;}//判断目标文件是否打开成功FILE * dfp = fopen(argv[2],"w");if(dfp == 0){perror("fopen dsp error");return -1;}//拷贝char tg;while(1){int res = fscanf(sfp,"%c",&tg);if(res == EOF){break;}fprintf(dfp,"%c",tg);}//关闭源文件、目标文件fclose(sfp);fclose(dfp);return 0;
}
//模块化拷贝
#include <myhead.h>
int main(int argc, const char *argv[])
{//判断是否有3个文件传入if(3 != argc){fputs("input file error:",stderr);return -1;}//判断源文件是否打开成功FILE * sfp = fopen(argv[1],"r");if(sfp == 0){perror("fopen sfp error");return -1;}//判断目标文件是否打开成功FILE * dfp = fopen(argv[2],"w");if(dfp == 0){perror("fopen dsp error");return -1;}//拷贝char tg[128] = "";while(!feof(sfp)){int res = fread(tg,1,sizeof(tg),sfp);
//		if(res == 0){
//			break;
//		}fwrite(tg,1,res,dfp);}//关闭源文件、目标文件fclose(sfp);fclose(dfp);return 0;
}

2、实现注册和登录功能,将注册账号和密码存储到文件中,登录时遍历文件如果存在就登录成功否则登录失败

#include <myhead.h>
//用户结构体
typedef struct
{char name[10];char passwd[16];
}usr;//注册
int register_newusr()
{//追加的方式打开文件FILE *fp = fopen("./usr.account.txt","a+");if(fp == NULL){perror("fopen error");return -1;}usr new,old;//用户输入scanf("%s %s", new.name, new.passwd);//移动文件光标到文件头rewind(fp);//遍历判断用户输入与源文件里的是否有相同的while(1){//遍历源文件int res = fscanf(fp,"%s %s", old.name , old.passwd);printf("res =%d\n",res);if( res == EOF ){	break;}//比较用户名if( strcmp(new.name , old.name) == 0 ){printf("创建失败,该用户已存在!\n");return 0;}}//将用户输入的存入源文件int res1 = fprintf(fp,"%s %s\n", new.name, new.passwd);//判断成功printf("%s %s\n",new.name , new.passwd);if(res1 != EOF){printf("创建成功!\n");}//关闭文件fclose(fp);return 0;
}//登录
int load_usr()
{//打开文件FILE * fp = fopen("./usr.account.txt","r");if(fp == NULL){perror("fopen error");return -1;}usr temp,old;//用户输入scanf("%s %s", temp.name, temp.passwd);//遍历源文件是否有存档while(1){//遍历源文件int res = fscanf(fp,"%s %s",old.name,old.passwd);if(res == EOF){break;}//比较是否相同if( strcmp(temp.name , old.name) == 0 && strcmp(temp.passwd , old.passwd) == 0 ){printf("登录成功!\n");return 0;}}//遍历完仍没有登录提示printf("用户名或密码错误!\n");		//关闭文件fclose(fp);return 0;
}int main(int argc, const char *argv[])
{while(1){printf("------登录界面------\n");printf("1、注册\n");printf("2、登录\n");printf("0、退出\n");int choice;printf("请输入你的选择:");scanf("%d",&choice);switch(choice){case 1:register_newusr();break;case 2:load_usr();break;case 0:return 0;break;default :printf("选择有错,请重新选择:\n");break;}}return 0;
}


http://www.ppmy.cn/embedded/128430.html

相关文章

使用OpenCV实现光流追踪

在计算机视觉领域&#xff0c;光流追踪是一种重要的技术&#xff0c;用于估计图像中像素运动的瞬时速度。它广泛应用于视频分析、运动检测、物体跟踪和姿态估计等领域。本文将介绍如何使用OpenCV库实现光流追踪&#xff0c;并展示一个简单的示例代码。 什么是光流追踪&#xf…

Nginx + RTMP Module搭建流媒体服务器简单步骤

Nginx RTMP Module搭建流媒体服务器的步骤如下&#xff1a; 一、准备工作 安装Nginx&#xff1a; 首先&#xff0c;需要确保服务器上已经安装了Nginx。如果尚未安装&#xff0c;可以通过包管理器&#xff08;如yum、apt等&#xff09;或从Nginx官方网站下载源代码进行编译安装…

WPF组件的自定义模板和触发器全面解析

Windows Presentation Foundation&#xff08;WPF&#xff09;是微软提供的一个用于构建桌面客户端应用程序的UI框架。其依赖于XAML&#xff08;Extensible Application Markup Language&#xff09;进行用户界面设计&#xff0c;提供了一套强大的控件和组件模型。在WPF开发中&…

在生产制造领域,可视化大屏的作用可以说无可替代。

在生产制造领域&#xff0c;可视化大屏的作用确实无可替代。 可视化大屏能够实时展示生产过程中的关键数据。如生产进度、产量、设备运行状态、质量指标等。管理人员可以通过大屏一目了然地掌握生产的整体情况&#xff0c;及时发现问题并采取措施&#xff0c;确保生产的高效进…

JavaWeb合集03-Maven

三、Maven Maven是apache旗下的一一个开源项目&#xff0c;是一款用于管理和构建java项目的工具。 作用: 依赖管理&#xff1a;方便快捷的管理项目依赖的资源(jar包)&#xff0c; 避免版本冲突问题。统一项目结构&#xff1a;提供标准、统一的项目结构&#xff0c;maven项目。…

大规模多传感器滑坡检测数据集,利用landsat,哨兵2,planet,无人机图像等多种传感器采集数据共2w余副图像,mask准确标注滑坡位置

大规模多传感器滑坡检测数据集&#xff0c;利用landsat&#xff0c;哨兵2&#xff0c;planet&#xff0c;无人机图像等多种传感器采集数据共2w余副图像&#xff0c;mask准确标注滑坡位置 大规模多传感器滑坡检测数据集介绍 数据集概述 名称&#xff1a;大规模多传感器滑坡检测…

【项目经验分享】Stable Diffusion生成式扩散模型毕业设计项目案例定制

关于Stable Diffusion生成式扩散模型的毕业设计题目&#xff0c;这些题目涵盖了该模型的应用、优化、创新以及与其他领域的结合&#xff1a; 基础应用与优化 Stable Diffusion生成效果与风格控制技术研究Stable Diffusion模型在图片去噪中的应用基于Stable Diffusion的高分辨…

SpringColoud GateWay 核心组件

优质博文&#xff1a;IT-BLOG-CN 【1】Route路由&#xff1a; Gateway的基本构建模块&#xff0c;它由ID、目标URL、断言集合和过滤器集合组成。如果聚合断言结果为真&#xff0c;则匹配到该路由。 Route路由-动态路由实现原理&#xff1a; 配置变化Apollo 服务地址实例变化…