32、IO/对文件读写操作相关练习20240218

一、使用fgets统计给定文件的行数

代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>int main(int argc, const char *argv[])
{FILE *fp=NULL;if((fp=fopen("./1.txt","r"))==NULL)//只读形式打开1.txt文件{perror("fopen error");return -1;}char str[32]="";//定义字符数组用于存储文件内每一行字符int line=0;//记录行数while(1){char *p=fgets(str,sizeof(str),fp);//循环获取文件内每一行字符,并存入strif(NULL==p)//如果返回NULL 则结束循环;break;printf("%s\n",str);int i=strlen(str)-1;//计算每次获取的字符串中 \0前一个字符的下标;if(str[i]=='\n')//如果对应下标的元素是\n 行数+1;line++;}printf("1.txt line=%d\n",line);//循环结束输出行数;return 0;
}

运行:

二、 使用fputs和fgets完成两个文件的拷贝。

代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>int main(int argc, const char *argv[])
{FILE *srcfp=NULL; //定义两个文件指针;FILE *destfp=NULL; //只读形式打开1.txt;只写模式打开2.txtif((srcfp=fopen("./1.txt","r"))==NULL || (destfp=fopen("./2.txt","w"))==NULL){perror("fopen error");return -1;}char str[32]="";//存储每次赋值的一行字符串;while(1){		char *p=fgets(str,sizeof(str),srcfp);//将1.txt中每行字符存入str;if(p==NULL)//如果返回NULL;则结束循环{break;}fputs(str,destfp);//将每行获取的字符输入到文件2.txt中;}return 0;
}

运行:

三、完成注册登录功能

做个小菜单,功能1是注册功能,输入注册账户和注册密码,将账户和密码写入文件中

功能2是登录功能,提示并输入登录账户和登录密码,并用其遍历文件中的每一组账户和密码,如果匹配成功,则登录成功,如果全部不匹配则提示登录失败。

代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>int main(int argc, const char *argv[])
{int menu=0;FILE *fp=NULL;char str[32]="";while(1){system("clear");//执行终端指令printf("\t\t-----登录系统------\n");printf("\t\t------1.注册-------\n");printf("\t\t------2.登录-------\n");printf("\t\t------3.退出-------\n");printf("pelese enter option:");scanf("%d",&menu);getchar();//对menu进行多分支选择switch(menu){case 1:{if((fp=fopen("./3.txt","a"))==NULL){perror("fopen eerror");return -1;}printf("请设置注册账号:");scanf(" %s",str);fprintf(fp,"%s\n",str);//加换行存入printf("请设置注册密码:");scanf(" %s",str);fprintf(fp,"%s\n",str);fclose(fp);}break;case 2:{if((fp=fopen("./3.txt","r"))==NULL){perror("fopen eerror");return -1;}char input_str[16]="";
AGAINID:printf("请输入账号:");scanf(" %s",input_str);int flag=0;while(1){char *p=fgets(str,sizeof(str),fp);if(NULL==p)break;str[strlen(str)-1]='\0';//结尾添加\0作为字符串标志int sub=strcmp(str,input_str); //比较两个字符串if(!sub){flag++;printf("账号存在\n");break;}}if(0==flag){printf("输入的账号不存在\n");goto 	AGAINID;}
AGAINPW:printf("请输入密码:");char input_pw[16]="";scanf(" %s",input_pw);	while(1){char *p=fgets(str,sizeof(str),fp);if(NULL==p)break;str[strlen(str)-1]='\0';int sub=strcmp(str,input_pw);if(!sub){flag++;printf("登陆成功\n");break;}}if(0==flag){printf("输入的密码不正确\n");goto 	AGAINPW;}fclose(fp);}break;case 3:goto END;default:printf("选择的功能有误,请重新输入\n");}printf("请输入任意按键回车结束\n");while(getchar()!='\n');}
END:return 0;
}

运行结果:

 

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

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

相关文章

【C++】类与对象【定义、访问限定符、this指针】

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;http://t.csdnimg.cn/eCa5z 目录 面向过程和面向对象初步认识 类的引入 类的定义 成员变量命名规则的建议&#xff1a; 类的访问限定符及…

见智未来:数据可视化引领智慧城市之潮

在数字时代的浪潮中&#xff0c;数据可视化崭露头角&#xff0c;为打造智慧城市注入了强大的活力。不再被深奥的数据所束缚&#xff0c;我们通过数据可视化这一工具&#xff0c;可以更加接近智慧城市的未来。下面我就以可视化从业者的角度来简单聊聊这个话题。 数据可视化首先为…

模型超参数寻优

参考某篇QSAR的sci论文设置 根据上图&#xff0c;我设置我的XGBoost模型&#xff1a; # 定义要搜索的超参数的候选值 param_grid {model__learning_rate: [0.1, 0.01, 0.001], # 调整学习率model__n_estimators: [50, 100, 200, 300,400,500], # 调整树的数量model__max_de…

防御第五次作业

拓扑图及要求 1 创建安全区域 创建nat策略 测试 2 创建目标nat 测试 3 配置双向nat 配置IP 测试 查看会话表 4 FW1 FW3 结果 5 办公区限流 销售部限流 6 7

ansible自动化运维工具及常见模块的使用

目录 一、ansible概述 二、ansible的特性 三、ansible 环境安装部署 管理端安装 ansible&#xff1a; 配置主机清单&#xff1a; 配置密钥对验证&#xff1a; 四、ansible 常见模块的使用 1&#xff0e;command 模块 2&#xff0e;shell 模块 3&#xff0e;cron 模块…

拿捏c语言指针(中)

前言 书接上回 拿捏c语言指针&#xff08;上&#xff09; 此篇主要讲解的是指针与数组之间的爱恨情仇&#xff0c;跟着我的脚步一起来看看吧~ 创造不易&#xff0c;可以帮忙点点赞吗 如有差错&#xff0c;欢迎指出 理解数组名 数组名是首元素地址 例外 1.sizeof&#xff0…

【工作向】版本管理-IPD流程简介

1. IPD的由来 Integrated Product Development&#xff0c;集成产品开发 从IBM引进并结合自身实践 2. 引入IPD的过程 突破期 -> 全面推行期 -> 与时俱进发展 -> IPD2.0 19年开始 版本 -> 项目 -> 产品 产品开发流程&#xff0c;需求管理流程&#xff0c;生…

2024最新软件测试八股文(答案+文档)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&a…

运行错误(竞赛遇到的问题)

在代码提交时会遇见这样的错误&#xff1a; 此处运行错误不同于编译错误和答案错误&#xff0c;运行错误是指是由于在代码运行时发生错误&#xff0c;运行错误可能是由于逻辑错误、数据问题、资源问题等原因引起的。这些错误可能导致程序在运行时出现异常、崩溃。 导致不会显示…

机器学习2---逻辑回归(基础准备)

逻辑回归是基于线性回归是直线分的也可以做多分类 ## 数学基础 import numpy as np np.pi # 三角函数 np.sin() np.cos() np.tan() # 指数 y3**x # 对数 np.log10(10) np.log2(2) np.e np.log(np.e) #ln(e)# 对数运算 # log(AB) log(A) logB np.log(3*4)np.log(3)np.log(4) #…

Linux之Shell

第 1 章 Shell 概述 1&#xff09;Linux 提供的 Shell 解析器有 [zhaohadoop101 ~]$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh2&#xff09;bash 和 sh 的关系 [zhaohadoop101 bin]$ ll | grep bash -rwxr-xr-x. 1 root root 941880…

如何利用测评自养号成功运营沃尔玛、阿里国际等跨境平台?

沃尔玛&#xff0c;自1962年成立以来&#xff0c;已稳居全球最大零售商的行列&#xff0c;并连续多年荣登世界500强企业的榜单。凭借强大的企业实力和卓越的市场表现&#xff0c;该公司在美国《财富》杂志2014-2016年全球最大500家公司的评选中荣登榜首。如今&#xff0c;沃尔玛…

VFH特征的使用(一)

一、SHOT特征描述符可视化 C #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h> #include <pcl/registration/correspondence_estimation.h> #include <boo…

王力宏胜诉,事实胜于雄辩,真相终将大白。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 好的&#xff0c;以下是对“2月5日&#xff0c;王力宏工作室在…

echarts制作两个柱状图

let colorList[#02ce8b,#ffbe62,#f17373]; let data1 [90,80,70,50] option { title:[{ // 第一个标题text: 环保检测, // 主标题textStyle: { // 主标题样式color: #333,fontWeight: bold,fontSize: 16},left: 20%, // 定位到适合的位置top: 10%, // 定位到适合的位置},{ //…

基于Springboot的新能源充电系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的新能源充电系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&a…

IO 作业 24/2/18

1> 使用fgets统计给定文件的行数 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, const char *argv[]) {//定义文件指针FILE *fpNULL;//打开文件&#xff08;只读&#xff09;if((fpfopen("./test.txt",&quo…

300分钟吃透分布式缓存-01讲:业务数据访问性能太低怎么办?

这节课主要讲缓存的基本思想、缓存的优点、缓存的代价三个部分。 缓存的定义 先来看下缓存的定义。 & 缓存最初的含义&#xff0c;是指用于加速 CPU 数据交换的 RAM&#xff0c;即随机存取存储器&#xff0c;通常这种存储器使用更昂贵但快速的静态 RAM&#xff08;SRAM&…

Airtest-Selenium实操小课:爬取新榜数据

1. 前言 最近看到群里很多小伙伴都在用Airtest-Selenium做一些web自动化的尝试&#xff0c;正好趁此机会&#xff0c;我们也出几个关于web自动化的实操小课&#xff0c;仅供大家参考~ 今天跟大家分享的是一个非常简单的爬取网页信息的小练习&#xff0c;在百度找到新榜网页&a…

【精选】Java面向对象进阶——接口细节:成员特点和接口的各种关系

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …