IO进程线程day1作业

news2025/1/20 23:52:27

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

代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
	if(argc != 2)
	{
		printf("inputs file error\n");
		printf("usage:./a.out filename\n");
		return -1;
	}

	//定义文件指针,以只读形式打开文件
	FILE *fp = NULL;
	if((fp = fopen(argv[1],"r")) == NULL)
	{
		perror("fopen error");
		return -1;
	}
	int line=0;
	char buf[5]="";
	while(1)
	{
		char *ptr=fgets(buf,sizeof(buf),fp);
		if(ptr==NULL)
		{
			break;
		}
		while(*ptr!='\0')
		{
			if(*ptr=='\n')
			{
				line++;
			}
			ptr++;
		}
	}
	printf("line=%d\n",line);

	//关闭文件
	fclose(fp);
	return 0;
}

运行结果:

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

代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
	if(argc != 3)
	{
		printf("inputs file error\n");
		printf("usage:./a.out srcfile destfile\n");
		return -1;
	}
	//定义文件指针,以只读形式打开文件
	FILE *srcfp = NULL;
	if((srcfp = fopen(argv[1],"r")) == NULL)
	{
		perror("fopen error");
		return -1;
	}
	//定义文件指针,以只写形式打开文件
	FILE *destfp = NULL;
	if((destfp = fopen(argv[2],"w")) == NULL)
	{
		perror("fopen error");
		return -1;
	}
	char buf[10]="";
	while(1)
	{
		char *ptr=fgets(buf,sizeof(buf),srcfp);
		if(ptr==NULL)
		{
			break;
		}
		fputs(ptr,destfp);
	}

	//关闭文件
	fclose(srcfp);
	fclose(destfp);

	return 0;
}

运行结果: 

3、完成注册登录功能

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

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

代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
	int menu=0;
	while(1)
	{
	//	system("clear");  //执行终端指令
		
		printf("************xx登录界面*********************\n");
		printf("**************1->注册**********************\n");
		printf("**************2->登录**********************\n");
		printf("**************3->退出**********************\n");
		printf("请输入选项:");
		scanf("%d",&menu);
		getchar();

		//菜单多分支选择
		switch(menu)
		{
			case 1:
				{
					//注册功能
					//存储账号
					FILE *accountfp=NULL;
					if((accountfp=fopen("./account.txt","a"))==NULL)
					{
						perror("fopen error");
						return -1;
					}
					//定义要写入的用户名账号并存储
					char account[10]="";
					printf("please enter account:");
					fscanf(stdin,"%s",account);
					getchar();
					fputs(account,accountfp);
				//	fputc('\n',accountfp);
					fclose(accountfp);

					//存储密码
					FILE *passwdfp=NULL;
					if((passwdfp=fopen("./passwd.txt","a"))==NULL)
					{
						perror("fopen error");
						return -1;
					}
					//定义要写入的用户名密码并存储
					char passwd[10]="";
					printf("please enter passwd:");
					fscanf(stdin,"%s",passwd);
					getchar();
					fputs(passwd,passwdfp);
				//	fputc('\n',passwdfp);
					fclose(passwdfp);
				//	system("clear");  //执行终端指令
				}break;
			case 2:
				{
					//登录功能
					char buf[10]="";
					//验证账户
					char account[10]="";
					FILE *accountfp=NULL;
					if((accountfp=fopen("./account.txt","r"))==NULL)
					{
						perror("fopen error");
						return -1;
					}
					printf("please enter account:");
					fscanf(stdin,"%s",account);
					while(1)
					{
						//遍历文件中的账户比较
						char *ptr=fgets(buf,sizeof(buf),accountfp);
						if(strcmp(buf,account)==0)
						{
							printf("account true!\n");
							break;
						}
						if(ptr==NULL)
						{
							printf("account error\n");
							goto AERROR;
							break;
						}
					}
					fclose(accountfp);
					
					//验证密码
					char passwd[10]="";
					FILE *passwdfp=NULL;
					if((passwdfp=fopen("./passwd.txt","r"))==NULL)
					{
						perror("fopen error");
						return -1;
					}
					printf("please enter passwd:");
					fscanf(stdin,"%s",passwd);
					while(1)
					{
						//遍历文件中的账户比较
						char *ptr=fgets(buf,sizeof(buf),passwdfp);
						if(strcmp(buf,passwd)==0)
						{
							printf("passwd true!\n");
							printf("登录成功!\n");
							break;
						}
						if(ptr==NULL)
						{
							printf("passwd error\n");
							printf("登录失败\n");
							break;
						}
					}
					fclose(passwdfp);


				}break;
			case 0:goto END;
			default:printf("error,please try again\n");
		}
		//提示输入任意键按回车结束
		printf("请输入任意键按回车结束!!!\n");
		while(getchar()!='\n');

	}
AERROR:printf("登录失败\n");
END:

	return 0;
}

运行结果:

 

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

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

相关文章

ruoyi低版本shiro反序列化解决

解决方式如下&#xff1a; 方案一.升级shiro至最新版本方案二.保持shiro版本不变,修改rememberMe默认密钥,改为自定义密钥获取 com.msunsoft.framework.config.ShiroConfig: 将其改为以下内容: // 设置cipherKey密钥Value("${shiro.cookie.cipherKey}")private Str…

有关光猫、路由器、交换机、网关的理解

前提 在了解计算机网络的过程中&#xff0c;出现了这四个名词&#xff1a;光猫、路由器、交换机、网络。有点模糊&#xff0c;查阅互联网相关资料&#xff0c;进行整理。如有错误&#xff0c;欢迎大家批评指正。 光猫 首先光猫是物理存在的&#xff0c;大家在家里应该都可以…

『 C++ 』海量数据处理

文章目录 &#x1f996; 快速找出海量数据中是否存在该整型数据&#x1f996; 有限内存情况下两个文件(海量query)中找出交集&#x1f996; 海量数据中找出只出现1次的数据&#x1f996; 有限内存情况下两个文件(整型)找出交集&#x1f996; 海量数据中找出出现次数不超过2次的…

CleanMyMac X好不好用?如何下载2024最新版本

CleanMyMac X是一款好用的系统优化软件&#xff0c;具有简洁的界面和多样的功能&#xff0c;能够支持系统垃圾、图片、邮件、iTunes清理&#xff0c;移除恶意软件&#xff0c;优化系统和释放多余空间等。 CleanMyMac X全新版下载如下: https://wm.makeding.com/iclk/?zoneid4…

Python算法题集_随机链表的复制

Python算法题集_随机链表的复制 题138&#xff1a;随机链表的复制1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【双层循环】2) 改进版一【字典哈希】3) 改进版二【单层哈希】4) 改进版三【递归大法】 4. 最优算法 本文为Python算法题集之一的…

Open CASCADE学习|TopoDS_Vertex与gp_Pnt相互转化

目录 gp_Pnt TopoDS_Vertex 关系和转换 使用场景 在Open CASCADE Technology (OCCT)中&#xff0c;TopoDS_Vertex和gp_Pnt是两种不同的数据类型&#xff0c;用于表示三维空间中的点。它们有不同的用途和特性&#xff1a; gp_Pnt gp_Pnt是OCCT几何库&#xff08;Geom&…

使用RegNet替换YOLOX中原始的Backbone

使用mmdetection 中的RegNet bcakbones替换YOLOX中原始的Backbone 将mmdet/models/backbones/regnet.py中相关的代码复制到YOLOX中&#xff0c;并进行适配 注意通道数要适配 in_channels [64, 160, 384] &#xff0c;可以通过调试后&#xff0c;先运行到后后端输出结果出&a…

算法练习-01背包问题【含递推公式推导】(思路+流程图+代码)

难度参考 难度&#xff1a;困难 分类&#xff1a;动态规划 难度与分类由我所参与的培训课程提供&#xff0c;但需 要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0…

阿里云香港轻量应用服务器网络线路cn2?

阿里云香港轻量应用服务器是什么线路&#xff1f;不是cn2。 阿里云香港轻量服务器是cn2吗&#xff1f;香港轻量服务器不是cn2。阿腾云atengyun.com正好有一台阿里云轻量应用服务器&#xff0c;通过mtr traceroute测试了一下&#xff0c;最后一跳是202.97开头的ip&#xff0c;1…

RK3399平台开发系列讲解(USB篇)U盘等存储类设备

🚀返回专栏总目录 文章目录 一、什么是U盘等存储类设备二、U盘设备传输数据结构三、U盘识别需要打开的宏沉淀、分享、成长,让自己和他人都能有所收获!😄 📢介绍U盘等存储类设备。 一、什么是U盘等存储类设备 USB Mass Storage Device Class(USB MSC/UMS) USB大容量存…

如何在Linux系统中配置并优化硬盘的RAID

在Linux系统中配置和优化硬盘的RAID技术可以帮助提高数据存储性能和安全性。RAID&#xff08;Redundant Array of Independent Disks&#xff09;技术通过将多个硬盘组合起来&#xff0c;以增加性能、容量或冗余度&#xff0c;提高数据的可靠性和可用性。本文将介绍如何在Linux…

嵌入式学习-C++-Day6

思维导图 作业 以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有一…

【机构vip教程】Unittest(1):unittest单元测试框架简介

unittest单元测试框架简介 unittest是python内置的单元测试框架&#xff0c;具备编写用例、组 织用例、执行用例、功能&#xff0c;可以结合selenium进行UI自动化测 试&#xff0c;也可以结合appium、requests等模块做其它自动化测试 官方文档&#xff1a;https://docs.pytho…

【计算机网络】P2P应用

将会在两个例子中得出结果 1&#xff0c;对等文件分发 &#xff1b;2&#xff0c;大型对等方社区中的服务器 P2P文件分发 自拓展性 直接成因是&#xff1a;对等方除了是比特的消费者外还是它们的重新分发者BitTorrent 一个用于文件分发的P2P协议洪流 torrent 参与一个特定文件…

day34打卡

day34打卡 860. 柠檬水找零 解法&#xff0c;贪心&#xff1a;局部最优&#xff1a;遇到账单20&#xff0c;优先消耗美元10&#xff0c;完成本次找零 -》全局最优&#xff1a;完成全部账单的找零。 遇到5&#xff0c;直接收下遇到10&#xff0c;找一个5元遇到20&#xff0c;…

CS50x 2024 - Lecture 6 - Python

00:00:00 - Introduction 00:01:01 - Python print("hello world")与c的显著差异 1.不必显式包含标准库 2.不再需要定义main函数 00:07:24 - Speller 00:13:41 - Filter from PIL import Image, ImageFilterbefore Image.open("bridge.jpg") after…

山西电力市场日前价格预测【2024-02-15】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-02-15&#xff09;山西电力市场全天平均日前电价为168.98元/MWh。其中&#xff0c;最高日前电价为366.42元/MWh&#xff0c;预计出现在18:30。最低日前电价为0.00元/MWh&#xff0c;预计出…

黑马程序员-瑞吉外卖day9

菜品分类下拉列表 CategoryController里面写 /*** 根据条件查询分类数据** param category* return*/GetMapping("/list")ApiOperation("菜品分类目录")public R<List<Category>> list(Category category) {List<Category> list cate…

洛夫克拉夫特“克苏鲁神话”艺术风格探索(一)

克苏鲁神话引入中国时间不长&#xff0c;研究的规模也不如国外大&#xff0c;但克苏鲁神话作为神话史、奇幻小说史上的重要节点&#xff0c;有很大的影响力与非常重要的研究意义。为了促进中文语境下克苏鲁神话元素的使用和创作、更好地设计克苏鲁的呼唤游戏模组&#xff08;剧…

0206-1-网络层

第 4 章 网络层 网络层提供的两种服务 虚电路服务 数据报服务 概要: 虚电路服务与数据报服务的对比 网际协议 IP 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议&#xff1a; 地址解析协议 ARP (Address Resolution Protocol)逆地…