IO编程--单字符、字符串、格式化、模块化实现文件拷贝以及登录注册

一、完成标准io的单字符、字符串、格式化、模块化实现两个文件的拷贝
代码如下:

1.单字符

#include <myhead.h>
int main(int argc, const char *argv[])
{//打开文件FILE* fp=fopen("test.txt","r");	FILE* fq=fopen("copy_test.txt","w");if(fp==NULL||fq==NULL){perror("fopen error");return -1;}int ch;//循环将一个文件字符拷贝到另一个文件while(1){ch=fgetc(fp);//若文件指针指向文件末尾跳出循环if(feof(fp))break;fputc(ch,fq);}fclose(fp);fclose(fq);return 0;
}

2.字符串:

#include <myhead.h>
int main(int argc, const char *argv[])
{FILE* fp=fopen("test.txt","r");FILE* fq=fopen("copy_test.txt","w");if(fp==NULL||fq==NULL){perror("fopen error");return -1;}//定义字符数组存放从初始文件拷贝出来的字符串char str[20];while(1){fgets(str,sizeof(str),fp);if(feof(fp))break;fputs(str,fq);}//向文件写入拷贝成功的话 便于查看结果fprintf(fq,"字符串拷贝成功\n");fclose(fp);fclose(fq);return 0;
}

3.格式化:

#include <myhead.h>
int main(int argc, const char *argv[])
{FILE* fp=fopen("test.txt","r");FILE* fq=fopen("copy_test.txt","w");if(fp==NULL||fq==NULL){perror("fopen error");return -1;}char ch;while(1){//%c拷贝一切字符包括空格和回车 使文件原样输出fscanf(fp,"%c",&ch);if(feof(fp))break;fprintf(fq,"%c",ch);}fprintf(fq,"格式化拷贝成功\n");fclose(fp);fclose(fq);return 0;
}

4.模块化:

#include <myhead.h>
int main(int argc, const char *argv[])
{FILE* fp=fopen("test.txt","r");FILE* fq=fopen("copy_test.txt","w");if(fp==NULL||fq==NULL){perror("fopen error");return -1;}
//可以使用单个字符单个字符的拷贝
/*	char str[50];while(!feof(fp)){int res=fread(str,sizeof(char),sizeof(str)-1,fp);str[res]='\0';fwrite(str,sizeof(char),res,fq);}*///也可以使用每次拷贝字符串数组长度,多次拷贝文件while(1){char str[50]=" ";fread(str,sizeof(str),1,fp);fwrite(str,sizeof(str),1,fq);if(feof(fp))break;}fprintf(fq,"模块化拷贝成功\n");fclose(fp);fclose(fq);return 0;
}

运行结果如图所示:

单字符:

字符串:

格式化:

模块化:

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

代码如下:

#include <myhead.h>
//注册函数
int enroll_user(){//以只写形式打开文件FILE *fp=fopen("information.txt","a");//定义两个字符串数组存放账号、密码char username[20],password[20];printf("\t注册页面\n");printf("请输入帐号:");//从终端获取账号scanf("%s",username);//调用判断函数 确定返回值int n=panduan(username);//若账号和已存在的账号不重复if(n!=-1){//写入文件fprintf(fp,"%s",username);fprintf(fp," ");printf("请输入密码:");//从终端获取密码scanf("%s",password);//写入文件fprintf(fp,"%s",password);fprintf(fp,"\n");printf("注册成功\n");fclose(fp);//若重复 退出循环 输出语句}else{printf("用户名重复,请重新输入\n");fclose(fp);}
}
//判断从终端获取的账号是否和文件中的账号重复
int panduan(char username[20]){FILE *fp=fopen("information.txt","r");//定义字符串数组存放文件中的账号char f_username[20];while(1){fscanf(fp,"%s",f_username);//文件结束且不相等返回0if(feof(fp)){fclose(fp);return 0;}//判断字符串是否相等 相等返回-1if(strcmp(username,f_username)==0){return -1;}}fclose(fp);return 0;
}
//登录函数
int load_user(){//打开文件FILE *fp=fopen("information.txt","r");//定义字符串数存放从终端获取的账号、密码char username[20],password[20];//存放文件中的账号密码char file_username[20],file_password[20];printf("请输入帐号:");//从终端获取账号scanf("%s",username);//确保文件光标定位在开头fseek(fp,0,SEEK_SET);int n;//while(1){fscanf(fp,"%s",file_username);if(feof(fp)){printf("未查询到该用户,请重新输入\n");break;}//判断账号和文件账号是否相等n=strcmp(username,file_username);//如果不等 获取密码 目的是使光标移动 循环判断是否存在该用户if(n != 0){fscanf(fp,"%s",file_password);//如果相等 获取密码进行匹配判断}else{printf("用户名正确\n");printf("请输入密码:");scanf("%s",password);fscanf(fp,"%s",file_password);if(strcmp(password,file_password)==0){printf("登录成功\n");break;}else{printf("密码错误\n");break;}}}
}
int main(int argc, const char *argv[])
{/*实现注册和登录功能将注册账号和密码存储到文件中,登录时遍历文件如果存在就登录成功否则登录失败*/	printf("\t欢迎进入网站!\n");int cz=0;//主函数实现结构登录注册页面while(1){printf("\t请选择注册或登录\n");printf("\t1、注册\n");printf("\t2、登录\n");printf("\t0、退出\n");scanf("%d",&cz);//循环调用注册和登录函数switch(cz){case 0:exit(0);case 1://注册函数enroll_user();break;case 2://登录函数load_user();break;}}return 0;
}

运行结果如图所示:

三、思维导图 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/448777.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第九课:Python学习之函数基础

函数基础 目标 函数的快速体验函数的基本使用函数的参数函数的返回值函数的嵌套调用在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数&#xff0c;就是把 具有独立功能的代码块 组织为一个小模块&#xff0c;在需要的时候 调用函数的使用包含两个步骤&#xff…

基于GRNN广义回归网络和MFCC的语音情绪识别matlab仿真,对比SVM和KNN

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) filePath Test_data\悲伤1.wav 类型&#xff1a;悲伤 识别置信度 Vmax 0.9559 2.算法运行软件版本 matlab2022a 3.部…

Vue2路由

1.路由 1.1.Vue路由基础 Vue属于单页应用&#xff08;SPA&#xff09;&#xff0c;即整个应用程序中只有一个html页面。 在单页应用中&#xff08;SPA&#xff09;&#xff0c;由于只是更改DOM来模拟多页面&#xff0c;所以页面浏览历史记录的功能就丧失了。此时&#xff0c…

nextjs项目中,使用postgres的完整案例

目的 通过此案例&#xff0c;可以简单快速的过一下数据库的操作&#xff0c;熟悉app-router这种模式下&#xff0c;client component和server component的两种组件中基本的接口使用。 技术栈 nextjs14.2.* app-routervercel/postgres0.10.*typescript5 重要事情说三遍1 ap…

uni-app写的微信小程序如何体积太大如何处理

方法一&#xff1a;对主包进行分包处理&#xff0c;将使用url: /pages/components/equipment/equipment跳转页面的全部拆分为分包&#xff0c;如url: /pagesS/components/equipment/equipment 在pages.json中添加 "subPackages": [{ "root"…

antd样式修改

1.Tab添加竖线 .ant-tabs .ant-tabs-tab {&::before {position: absolute;top: 50%;inset-inline-end: 0;width: 1px;height: 24px;background-color: #e1e1e1;transform: translateY(-50%);transition: background-color 0.2s;content: "";}} 像这样&#xff…

基于SSM的药品商城系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

科研绘图系列:R语言柱状图(histogram)

文章目录 介绍加载R包数据画图系统信息介绍 柱状图(Bar Chart),也称为条形图(Bar Graph),是一种常用的统计图表,用于展示不同类别的数据量。它由一系列垂直或水平的条形组成,每个条形的长度或高度代表相应类别的数值大小。 加载R包 library(tidyverse)# 显示中文 li…

增量知识 (Incremental Knowledge, IK)

在语义通信系统中&#xff0c;增量知识&#xff08;IK, Incremental Knowledge&#xff09;是一种增强数据传输效率和可靠性的技术&#xff0c;特别是用于混合自动重传请求&#xff08;HARQ, Hybrid Automatic Repeat reQuest&#xff09;机制时。它的核心思想是在传输失败后&a…

Android 15 推出新安全功能以保护敏感数据

Android 15 带来了增强的安全功能&#xff0c;可保护您的敏感健康、财务和个人数据免遭盗窃和欺诈。 它还为大屏幕设备带来了生产力改进&#xff0c;并对相机、消息和密钥等应用进行了更新。 Android 防盗保护 Google 开发并严格测试了一套全面的功能&#xff0c;以在盗窃之…

Stable Diffusion Web UI 大白话术语解释 (二)

归纳整理&#xff0c;Stable Diffusion Web UI 使用过程中&#xff0c;相关术语 ControlNet ControlNet 说简单点&#xff0c;就是你可以给 AI 一些“规则”&#xff0c;比如让它根据某些线条、结构或者骨架去画图。 这样能让 AI 画出更符合你要求的图片&#xff0c;特别适合画…

将爱传递 将“服务好”延伸

从泰康客户,转身成为泰康人,她直言是因为亲身感受了泰康“服务好”的魅力。 入司已8年的泰康养老浙江分公司HWP何英英,是泰康“服务好”的受益者。她从朋友的理赔中见证了泰康服务好的温度与力量,又被泰康养老的职域模式所吸引选择加入泰康。如今,她全身心投入在服务的第一线,…

PMP–知识卡片--项目生命周期与资源投入

预测型生命周期对变更并不友好&#xff0c;尤其是项目后期&#xff0c;变更代价太大&#xff0c;几乎让人无法接受。正如果所示&#xff0c;累计投入线代表项目累计的成本&#xff0c;也代表变更的代价。变更提出得越晚&#xff0c;代价越大。

实时语音转文字(基于NAudio+Whisper+VOSP+Websocket)

今天花了大半天时间研究一个实时语音转文字的程序&#xff0c;目的还包括能够唤醒服务&#xff0c;并把命令提供给第三方。 由于这方面的材料已经很多&#xff0c;我就只把过程中遇到的和解决方案简单说下。源代码开源在AudioWhisper: 实时语音转文字(基于NAudioWhisperVOSPWe…

1.几何算法-凸包

1.凸包的例子 1.1.简单求解 当着手设计一个计算凸包的算法时&#xff0c;此前所给出的凸包定义对我们没有多少帮助。按照定义&#xff0c;需要计算出“包含 P 的所有凸集的交”&#xff0c;可是这种集合有无限多个。而我们所观察到的“CH是一个凸多边形”这一事实&#xff0c…

libaom 源码分析:aomdec.c 文件

aomdec.c 功能:libaom 项目完成视频解码过程的 demo文件位置:libaom/apps/aomdec.c函数关系 命令行说明 终端输入 ./aomdec --help,输出如下,展示如何使用方法。Usage: ./aomdec <options> filenameOptions:--help Show usage options and exit…

pico+Unity交互开发——触碰抓取

一、VR交互的类型 Hover&#xff08;悬停&#xff09; 定义&#xff1a;发起交互的对象停留在可交互对象的交互区域。例如&#xff0c;当手触摸到物品表面&#xff08;可交互区域&#xff09;时&#xff0c;视为触发了Hover。 Grab&#xff08;抓取&#xff09; 概念&#xff…

Qt_软件添加版本信息

文章内容: 给生成的软件添加软件的版权等信息 #include <windows.h> //中文的话增加下面这一行 #pragma code_page(65001)VS_VERSION_INFO VERSIONINFO

基于Arduino的简易收音机

DIY FM收音机&#xff1a;使用Arduino和Si4703模块打造 引言 在本项目中&#xff0c;我们将使用Arduino Nano和Si4703 FM调谐模块来构建一个功能完备的FM收音机接收器。这个易于跟随的指南非常适合想要深入无线电频率和无线通信世界的业余爱好者和电子爱好者。 Si4703模块是…

cuda编程模型

host和device&#xff1a; host&#xff1a;即CPU&#xff0c;CPU所关联的内存就叫host memorydevice&#xff1a;即GPU&#xff0c;GPU内的内存就叫device memory运行CUDA程序主要有三步&#xff1a;1&#xff09;host-to-device transfer&#xff1a;将数据从host memory拷到…