2024/2/18:IO进程线程

作业1:使用fgets统计给定文件的行数

代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{//定义FILE *类型的句柄FILE *fp=NULL;//判断是否进行了外部传参if(argc != 2){printf("unknow filename\n");return -1;}//以只读的形式打开文件if(( fp=fopen(argv[1],"r") ) ==NULL){perror("fopen error");return -1;}//统计文件行号int count=0;//定义一个行号的计数器char s[5]="";//存储读取到的字符串while(1){char *p=fgets(s,sizeof(s),fp);//读取字符串if(p==NULL){//读到文件结束则结束break;}for(int i=0;i<sizeof(s);i++)//遍历每次读取的字符串,看是否有换行{if(*(p+i)=='\n'){count++;}}}printf("line=%d\n",count);//关闭文件fclose(fp);return 0;
}

效果图:

作业2:使用fputs和fgets完成两个文件的拷贝

代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{//定义FILE *类型的句柄FILE *fp=NULL;//判断是否进行了外部传参if(argc != 3){printf("unknow filename\n");return -1;}//以只读的形式打开文件if(( fp=fopen(argv[1],"r") ) ==NULL){perror("fopen read error");return -1;}FILE *fp1=NULL;//以只写的形式打开文件if(( fp1=fopen(argv[2],"w") ) ==NULL){perror("fopen write error");return -1;}//定义字符数组存储读取到的字符串char s[5]="";//遍历读取的字符串while(1){char *p=fgets(s,sizeof(s),fp);//读取字符串if(p==NULL){//读到文件结束则结束break;}fputs(p,fp1);//将读取到的字符串拷贝到另外一个文件中}//关闭文件fclose(fp);fclose(fp1);return 0;
}

效果图:

作业3:完成注册登录功能

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

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

代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int menu = 0;int id=0;int password=0;while(1){printf("\t**********登录界面**********\n");printf("\t**********1.注册**********\n");printf("\t**********2.登录**********\n");printf("\t**********0.退出**********\n");printf("please enter menu:");scanf("%d", &menu);getchar();//吸收垃圾字符//对菜单多分支选择switch(menu){case 1:{//注册功能//打开文件FILE *fp=NULL;//以追加的形式打开文件if(( fp=fopen("./id.txt","a+")) == NULL){perror("fopen error");return -1;}//注册账户和密码printf("please enter id:");scanf("%d",&id);printf("please enter password:");scanf("%d",&password);fprintf(fp,"%d %d\n",id,password);//关闭文件fclose(fp);}break;case 2:{//登录功能//打开文件FILE *fp=NULL;//以只读的形式打开文件if(( fp=fopen("./id.txt","r")) == NULL){perror("fopen error");return -1;}//提示输入账户和密码printf("please enter id:");scanf("%d",&id);printf("please enter password:");scanf("%d",&password);//遍历文件中的内容查询账户密码是否正确while(1){int val1;//获取注册的账户fscanf(fp,"%d",&val1);int val2;//获取注册的密码fscanf(fp,"%d",&val2);if(val1==id && val2==password){puts("登录成功");break;}else{puts("账户或密码不正确");break;}if(val1==EOF || val2==EOF){break;}}//关闭文件fclose(fp);}break;case 0:goto END;//退出default:printf("error and please try again\n");}//提示输入任意键按回车结束printf("请输入任意键按回车结束!!!\n");while(getchar() != '\n');}
END:return 0;
}

效果图:

作业4:思维导图

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

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

相关文章

2.14日学习打卡----初学Zookeeper(一)

2.14日学习打卡 目录: 2.14日学习打卡Zookeeper概念一. 集中式到分布式单机架构集群架构什么是分布式三者区别 二. CAP定理分区容错性一致性可用性一致性和可用性的矛盾一致性和可用性如何选择 三. 什么是Zookeeper分布式架构Zookeeper从何而来Zookeeper介绍 四. 应用场景数据发…

mysql 2-18

加密与解密函数 其他函数 聚合函数 三者效率 GROUP BY HAVING WHERE和HAVING的区别 子查询 单行子查询和多行子查询 单行比较操作符 多行比较操作符 把平均工资生成的结果当成一个新表 相关子查询 EXISTS 一条数据的存储过程 标识符命名规则 创建数据库 MYSQL的数据类型 创建表…

WordPress管理员修改自己用户名的插件Username

有一些站长在刚开搭建WordPress网站时&#xff0c;对于管理员的用户名是随意输入&#xff0c;后来想要修改时发现不懂得如何下手。其实&#xff0c;修改WordPress管理员用户名最快速的方法就是进入数据库直接修改&#xff0c;详见『通过phpMyAdmin直接修改WordPress用户名的图文…

万字长文!非常详细!操作系统【内存管理】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;OS从基础到进阶 本文配套PDF文件&#xff0c;请浏览至文章底部下载。 1 内存管理基础概念1.1 总览1.2 内存管理应有的功能1.2.1 内存空间的分配和回收1.2.2 从逻辑上扩充内存1.2.3 地址转…

品牌/企业/人物百度百科创建攻略:一文掌握百度百科创建与审核要点

在数字化时代&#xff0c;百科全书已经成为大众获取知识和信息的重要渠道。无论是品牌、企业还是个人&#xff0c;拥有一个专属的百度百科词条&#xff0c;不仅可以提升知名度&#xff0c;还可以展现自己的实力和特色。那么&#xff0c;如何创建百度百科词条&#xff0c;并通过…

windows安装Mysql解压版

windows安装Mysql解压版 一、下载mysql-8.0.36-winx64.zip二、解压三、配置3.1. 添加环境变量&#xff1a;新建MYSQL_HOME3.2.如何验证是否添加成功&#xff1a;必须以管理员身份启动3.3. 初始化MySQL&#xff1a;必须以管理员身份启动3.4. 注册MySQL服务&#xff1a;必须以管理…

【软考中级备考笔记】数据的表示和校验码

2024/2/18 – 数据的表示和校验码 天气&#xff1a;阴雨 春节假期结束后第一个工作日&#xff0c;开始备考中级软件工程师。 希望在今年5月底的软考中取得中级证书 视频地址&#xff1a;https://www.bilibili.com/video/BV1Qc411G7fB 1. 计算机的总体架构 从下图中可以看出&am…

文件上传漏洞--Upload-labs--Pass03--特殊后缀与::$DATA绕过

方法一&#xff1a;特殊后缀绕过&#xff1a; 一、什么是特殊后缀绕过 源代码中的黑名单禁止一系列后缀名 之外的后缀&#xff0c;称之为‘特殊后缀名’&#xff0c;利用其来绕过黑名单&#xff0c;达到上传含有恶意代码的文件的目的。 二、代码审计 接下来对代码逐条拆解进行…

网络安全实验(三)

1.办公区设备可以通过电信和移动两条链路上网&#xff0c;且需要保留一个公网ip不能用来转换 2.分公司设备可以通过两条链路访问到dmz区域的http服务器 3.分公司内部客户端可以通过公网地址访问到内部服务器 4.FW1和FW3组成主备模式的双击热备 5.办公区上网用户限制流量不超…

鸿蒙开发系列教程(二十四)--List 列表操作(3)

列表编辑 1、新增列表项 定义列表项数据结构和初始化列表数据&#xff0c;构建列表整体布局和列表项。 提供新增列表项入口&#xff0c;即给新增按钮添加点击事件。 响应用户确定新增事件&#xff0c;更新列表数据。 2、删除列表项 列表的删除功能一般进入编辑模式后才可…

东方通TongWeb启动报cache问题解决

启动东方通&#xff0c;应用系统报错如下&#xff1a; [Unable to add the resource at [/WEB-INF/lib/ojdbc6-11.2.0.3.jar] to the cache because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum si…

华清远见作业第三十六天和第三十七天——C++(第五天和第六天)

思维导图&#xff1a; 第五天&#xff1a; 第六天&#xff1a; 作业&#xff1a; 编程题&#xff1a; 以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;…