2024/2/18:IO进程线程

news2024/11/28 12:44:41

作业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;
		}
		if(s[strlen(s)-1]=='\n'){//遇到'\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.coloradmin.cn/o/1456080.html

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

相关文章

JRT监听-PDF-Excel-Img

依赖全新设计&#xff0c;我们无需再顾虑历史兼容性的束缚&#xff1b;同时&#xff0c;基于多年来累积的深入需求理解&#xff0c;JRT监听机制巧妙地借助CMD命令模式&#xff0c;达成了监听的全面统一。无论是PDF、Excel还是图片文件&#xff0c;都不再需要特殊对待或额外区分…

html的无语义标签:div span

html的无语义标签&#xff1a;div & span 无语义标签&#xff1a;div & span 标题&#xff0c;段落&#xff0c;图片等都是通过固定的标签来表示&#xff0c;标题用h1~h6标签来表示&#xff0c;段落用p标签来表示&#xff0c;图片用img标签来表示……每个标签都有自己…

电商数据分析数据统计数据监控必备-电商API电商数据接口

API&#xff0c;全称Application Programming Interface&#xff0c;是一种用于不同应用程序间通信的接口&#xff0c;它允许不同的应用程序之间交换数据和功能。API可以理解为应用程序提供给其他应用程序或开发者的接口&#xff0c;通过这个接口&#xff0c;其他应用程序或开发…

质量当先:国辰智企QMS产品质量追溯平台助力电子企业发展

在当今竞争激烈的电子产品市场中&#xff0c;质量是企业成功的关键。为了满足客户对高品质产品的需求&#xff0c;企业需要一套可靠的质量管理系统。QMS产品质量追溯平台为电子产品行业提供了全面的解决方案&#xff0c;确保产品质量的可追溯性和持续改进。 产品质量追溯平台是…

【软件设计师】程序猿需掌握的技能——数据流图

作为一个程序员&#xff0c;不仅要具备高水平的程序编码能力&#xff0c;还要是熟练掌握软件设计的方法和技术&#xff0c;具有一定的软件设计能力&#xff0c;一般包括软件分析设计图&#xff08;常见的有数据流图&#xff0c;程序流程图&#xff0c;系统流程图&#xff0c;E-…

Python与SQLAlchemy:轻松管理数据库

在这篇文章中&#xff0c;我们将学习如何使用Python和SQLAlchemy库来轻松管理数据库。SQLAlchemy是一个强大的ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它允许您通过Python代码与关系型数据库进行交互&#xff0c;而无需编写SQL语句。 一、安装SQLAlchemy 首先…

Android studio 中英文转换

一、确认版本号 需要确认android studio软件版本&#xff0c;根据版本下载对应的中文汉化包&#xff0c;如果安装的汉化包版本不对应&#xff0c;可能会导致安装失败。 面板选择Help→About&#xff0c;在弹出框中查看当前版本号&#xff0c;我们只需要关心版本号前面的222即可…

智慧图书管理系统架构设计与实现

随着数字化时代的到来&#xff0c;智慧图书管理系统在图书馆和机构中扮演着重要的角色。一个优秀的图书管理系统不仅需要满足基本的借阅管理需求&#xff0c;还需要具备高效的性能、良好的扩展性和稳定的安全性。本文将讨论智慧图书管理系统的架构设计与实现&#xff0c;以满足…

在 Python 中,通过列表字典创建 DataFrame 时,若字典的 key 的顺序不一样以及部分字典缺失某些键,pandas 将如何处理?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ pandas 是一个快速、强大、灵活且易于使用的开源数据分析和处理工具&#xff0c;它是建立在 Python 编程语言之上的。 pandas 官方文档地址&#xff1a;https://pandas.pydata.org/ 在 Python 中&…

第九篇:node静态文件服务(中间件)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! &#x1f4d8; 引言&#xff1a; 当今互联网时代&am…

IDEA实现序列化时如何自动生成serialVersionUID

实现步骤&#xff1a;1.安装GenerateSerialVersionUID插件 2.点击idea左上角File -> Settings -> Editor -> Inspections -> 搜索 Serialization issues &#xff0c;找到 Serializable class without ‘serialVersionUID’ ->打上勾&#xff0c;再点击Apply-&…

《剑指 Offer》专项突破版 - 面试题 49、50 和 51 : 详解与二叉树中路径相关的面试题(C++ 实现)

目录 面试题 49 : 从根节点到叶节点的路径数字之和 面试题 50 : 向下的路径节点值之和 面试题 51 : 节点值之和最大的路径 面试题 49 : 从根节点到叶节点的路径数字之和 题目&#xff1a; 在一棵二叉树中所有节点都在 0~9 的范围之内&#xff0c;从根节点到叶节点的路径表…

5G车载路由器引领无人驾驶车联网应用

随着无人驾驶技术的不断发展&#xff0c;车联网正逐渐成为实现智能交通的重要组成部分。5G车载路由器将在车联网的应用中起到至关重要的作用&#xff0c;它能够满足无人驾驶应用的低时延、高速率和实时控制等需求&#xff0c;进一步推动无人驾驶车联网技术。 5G路由器具备低时延…

ACK One:构建混合云同城容灾系统

作者&#xff1a;蔡靖 对于当前业务运行在 IDC 内的 Kubernetes 集群中&#xff0c;希望通过云计算为云下业务提供同城灾备的高可用冗余能力&#xff0c;可利用阿里云分布式云容器平台 ACK One [ 1] 来提供统一得流量、应用和集群管理&#xff0c;实现业务流量的多集群路由和灾…

Eclipse - Switch Workspace

Eclipse - Switch Workspace References Switch Workspace References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

解决Ubuntu下网络适配器桥接模式下ping网址不通的情况

问题反应&#xff1a;ping不通网址 打开虚拟机中的设置&#xff0c;更改网络适配器为NAT模式 确定保存更改之后&#xff0c;退出输入如下命令。 命令1&#xff1a; sudo /etc/network/inferfaces 命令2&#xff1a; sudo /etc/init.d/network/ restart

Poller模块与Channel模块整合

目录 概要 tcp_cli.cc tcp_srv.cc server.hpp 测试结果 gdb调试 概要 本主要是将以下模块进行整合测试 Buffer缓冲区类实现(模块一)-CSDN博客 Socket套接字类实现(模块二)-CSDN博客 Channel事件管理类实现(模块三)-CSDN博客 Poller描述符监控类实现(模块四)-CSDN博客 经…

guitar pro五线谱转六线谱 guitar pro怎么去掉五线谱 简谱是什么 新手学吉他

在音乐领域&#xff0c;五线谱和六线谱是两种常见的乐谱表示方法。五线谱通常用于表示管弦乐、钢琴和其他键盘类乐器的音乐&#xff0c;而六线谱则常用于表示吉他等弦乐器的音乐。Guitar Pro软件作为一款专业的吉他编奏软件&#xff0c;六线谱的音乐更适合在软件中编奏。因此&a…

揭秘:一行代码搞定.Net API高并发的烦恼

高并发下的接口请求重复提交问题 在.Net开发中&#xff0c;我们经常遇到用户疯狂点击同一按钮&#xff0c;或者服务响应慢时重复发送请求&#xff0c;导致数据重复添加或混乱。这不仅浪费资源&#xff0c;更会得到错误的业务结果。如何高效解决这一普遍问题呢&#xff1f; 常规…

AI算法初识之分类汇总

一、背景 AI算法的分类方式多种多样&#xff0c;可以根据不同的学习机制、功能用途以及模型结构进行划分。以下是一些主要的分类方式及相应的代表性算法&#xff1a; 1. 按照学习类型 - **监督学习**&#xff1a; - 线性回归&#xff08;Linear Regression&#xff09; …