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.mfbz.cn/a/393914.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Javaweb之SpringBootWeb案例之AOP通知顺序的详细解析

3.2 通知顺序 讲解完了Spring中AOP所支持的5种通知类型之后&#xff0c;接下来我们再来研究通知的执行顺序。 当在项目开发当中&#xff0c;我们定义了多个切面类&#xff0c;而多个切面类中多个切入点都匹配到了同一个目标方法。此时当目标方法在运行的时候&#xff0c;这多…

防御第五次作业

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

【每天学习一点点 day04】工程化 npm create 脚手架 create-vue, vue-cli 执行原理① - npm cli

希望我们每个人都能找到属于自己的花期&#xff0c;不急不躁&#xff0c;静等风来。 今天打算用 Docusaurus 开始搭建自己的知识库&#xff0c;之前早已有此想法&#xff0c;遗憾的是没有坚持下来。 这次借助这个机会&#xff0c;也计划将自己【每天学习一点点】系列整理在自己…

Windows编程环境配置!

喜欢的话麻烦大家多点点关注&#xff0c;谢谢&#xff01; 原文地址&#xff1a;Windows编程环境配置&#xff01; - Pleasure的博客 下面是正文内容&#xff1a; 前言 近期闲来无事&#xff0c;就想着把Windows系统中的环境给完善整理一下。方便后续码字时的不时之需。 正文…

keep-alive 的简单使用

vue-router 的嵌套与模块化 router 实例中增加 children 属性&#xff0c;形成层级效果。App.vue 中的 router-view 承载的是 router 实例最外层的路由对象&#xff0c;如 /login、/404 等PageHome.vue 中的 router-view 承载的是 children 中的路由对象&#xff0c;如 /home、…

GIS分析和摄影测量进行屋顶太阳能潜力评估

目前,不可再生的能源资源有限,而减少全球变暖的想法使可再生能源的利用成为当务之急。其中,太阳能作为最清洁、最丰富的可再生能源备受关注。此外,成本的日益降低也使太阳能成为一种极具吸引力的能源。然而,为了从太阳能中获得最大利益,必须考虑各种标准,并选择合适的区…

单片机学习笔记---AD/DA工作原理(含运算放大器的工作原理)

目录 AD/DA介绍 硬件电路模型 硬件电路 运算放大器 DA原理 T型电阻网络DA转换器 PWM型DA转换器 AD原理 逐次逼近型AD转换器 AD/DA性能指标 XPT2046 XPT2046时序 AD/DA介绍 AD&#xff08;Analog to Digital&#xff09;&#xff1a;模拟-数字转换&#xff0c;将模拟…

【maya 入门笔记】基本视图和拓扑

1. 界面布局 先看基本窗口布局&#xff0c;基本窗口情况如下&#xff1a; 就基本窗口布局的情况来看&#xff0c;某种意义上跟blender更像一点&#xff08;与3ds max相比&#xff09;。 那么有朋友就说了&#xff0c;玛格基&#xff0c;那blender最下面的时间轴哪里去了&…

使用 cgroup 时踩过的坑

1 cgroup 介绍 1.1 cgroup 介绍 cgroup 全称 control group&#xff0c;控制组。通过 cgroup 可以限制应用使用的资源&#xff0c;资源包括 cpu、内存、磁盘 io、网络等。 工作中经常使用的 docker 容器就使用了 cgroup 进行资源限制和隔离&#xff0c;cgroup 是 docker 的基…

最长子串和回文子串相关的算法题解

这里写目录标题 一、3. 无重复字符的最长子串二、5. 最长回文子串三、647. 回文子串四、516. 最长回文子序列 一、3. 无重复字符的最长子串 中等 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释:…

代码检测规范和git提交规范

摘要&#xff1a;之前开发的项目&#xff0c;代码检测和提交规范都是已经配置好的&#xff0c;最近自己新建的项目就记录下相关配置过程。 1. ESlint配置 2013年6月创建开源项目&#xff0c;提供一个插件化的JavaScript代码检测工具&#xff0c;创建项目是生成的eslintrc.js文…

Python之:如何使用双重for循环输出九九乘法表?

文章目录 前言源代码 前言 如何用for双重循环输出九九乘法表&#xff1f;教程来咯&#xff01; 源代码 代码如下&#xff1a; for i in range(1, 10):for j in range(1, i1):print(f{j}{i}{i*j}\t, end)print()你学会了吗&#xff1f;效果如下&#xff1a; 想看详解&#…

全志平台R329 智能音响编译烧录方法

全志R329编译烧录方法 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送语音信号处理降噪算法&#xff0c;蓝牙耳机/音响音频&#xff0c;DSP音频项目核心开发资料, 一烧录 二 编译方法 …

STM32-开发板介绍

市面的开发板有很多&#xff0c;博主有幸了解到一款集成度较高的开发板&#xff0c;朗峰STM32F103RCT6&#xff0c;知名度不高&#xff0c;性价比很高&#xff0c;这是目前唯一一款集成了大量传感器和功能模块的高集成度开发板。 巨大的优势在于&#xff0c;传感器和功能模块的…

2024.2.18

使用fgets统计给定文件的行数 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("./test.txt","w"))NULL){perror("open err");return -1;}fputc(h,fp);fputc(\n,fp);fput…

浅析Linux设备驱动:IO端口和IO内存

文章目录 概述IO端口和IO内存的区别 IO资源管理IO资源类型IO端口资源IO内存资源 IO资源分配 IO端口访问IO端口操作函数 IO内存访问IO内存操作函数 相关参考 概述 在计算机系统中&#xff0c;外部设备通常会提供一组寄存器或内存用于处理器配置和访问设备功能。这些寄存器或内存…

介绍7款免费的最佳地图/导航/定位/GIS开源项目

文章目录 1、xdh-map新德汇地图应用类库1.1、独立引用1.2、与MyUI结合使用1.3、快速上手1.3.1、采用项目工程模板创建项目【推荐】1.3.2、 调用组件库功能 2、蚂蚁金服AntV-L7地理空间数据可视分析引擎2.1、AntV-L7简介2.2、核心特性2.3、支持丰富的图表类型2.4、如何使用2.4.1…

windows 启动和关闭mysql

1)打开我的电脑-->2)在左边文件中右键此电脑--> 3)点击管理-->4)点击服务和应用程序-->5)点击服务-->6)查找自己MySQL名称 右击 启动或者关闭

一、直方图相关学习

1、灰度直方图 1.1 基本概念和作用 表示图像中每个灰度级别的像素数量。用于分析图像的亮度分布情况。 1.2 代码示例 参数介绍 hist cv2.calcHist(images, channels, mask, histSize, ranges, hist, accumulate)-images&#xff1a;输入图像的列表。对于灰度图像&#xff0…

vue3-渲染机制

渲染机制 Vue 是如何将一份模板转换为真实的 DOM 节点的&#xff0c;又是如何高效地更新这些节点的呢&#xff1f;我们接下来就将尝试通过深入研究 Vue 的内部渲染机制来解释这些问题。 虚拟 DOM 你可能已经听说过“虚拟 DOM”的概念了&#xff0c;Vue 的渲染系统正是基于这…