2.18作业

news2025/1/18 11:41:06

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

程序代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
 
int main(int argc, const char *argv[])
{
	if(argc!=2)
	{
		printf("input 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;
	}
	char str[50]="";    //搬运字符
	int line=0;  //统计行号
	while(1)
	{
		char *p=fgets(str,sizeof(str),fp);//循环获取文件内每一行字符,并存入str
		if(NULL==p)
		{	
			break;
		}
			line++;
	}
	printf("line=%d\n",line);//循环结束输出行数;
	fclose(fp);
	return 0;
}

运行结果:

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

程序代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
 
int main(int argc, const char *argv[])
{
	if(argc!=3)
	{
		printf("input file error\n");
		printf("usage:./a.out filename\n");
		return -1;
	}
	FILE *srcfp=NULL; //定义两个文件指针;
	FILE *destfp=NULL; 
    //只读形式打开argv[1];只写模式打开argv[2]
	if((srcfp=fopen(argv[1],"r"))==NULL || (destfp=fopen(argv[2],"w"))==NULL)
	{
		perror("fopen error");
		return -1;
	}
	char str[50]="";//搬运字符
	while(1)
	{		
		char *p=fgets(str,sizeof(str),srcfp);//将argv[1]中每行字符存入str;
		if(p==NULL)//如果返回NULL;则结束循环
		{
			break;
		}
		fputs(str,destfp);//将每行获取的字符输入到文件argv[2]中;
	}
	return 0;
}

运行结果:

作业要求:

完成注册登录功能

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

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

程序代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
 
int main(int argc, const char *argv[])
{
	int num=0;
	FILE *fp=NULL;
	char str[50]="";
	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 input option:");
		scanf("%d",&num);
		getchar();
 
		//对menu进行多分支选择
		switch(num)
		{
		case 1:
			{
				if((fp=fopen("./1.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("./1.txt","r"))==NULL)
				{
					perror("fopen eerror");
					return -1;
				}
				char input_str[20]="";
ZHIN:
				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 	ZHIN;
				}
MMIN:
				printf("请输入密码:");
				char input_str1[20]="";
				scanf(" %s",input_str1);	
				while(1)
				{
					char *p=fgets(str,sizeof(str),fp);
					if(NULL==p)
						break;
					str[strlen(str)-1]='\0';
					int sub=strcmp(str,input_str1);
					if(!sub)
					{
						flag++;
						printf("登陆成功\n");
						break;
					}
				}
				if(0==flag)
				{
					printf("输入的密码不正确\n");
					goto 	MMIN;
				}
				fclose(fp);
			}break;
		case 3:goto END;
		default:
			   printf("选择的功能有误,请重新输入\n");
		}
		printf("请输入任意按键回车结束\n");
		while(getchar()!='\n');
	}
END:
	return 0;
}

运行结果:

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

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

相关文章

爬虫之正则表达式

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 概念&#xff1a; 正则表达式(regular expression)描述了一种字符串匹配的模式&#xff08;pattern&#xff09;&#xff0c;正则匹配是一个模糊的匹配(不是精确匹配) 如下四个方法经常使用&#xff1a; match()search()f…

数据分析师SQL面试准备(part1)

1. SQL 万能框架 2. SQL的书写顺序&#xff0c;跟程序真的执行顺序不同 3. 4. 5. 6. 7. case when utilization 8. 9. 10. 11.

【RL】Monte Carlo Learning(蒙特卡洛学习)

Lecture 5: Monte Carlo Learning The simplest MC-based RL algorithm: MC Basic 理解MC basic算法的关键是理解如何将policy iteration算法迁移到model-free的条件下。 Policy iteration算法在每次迭代过程中有两步&#xff1a; { Policy evaluation: v π k r π k γ…

【HarmonyOS】鸿蒙开发之Button组件——第3.4章

按钮类型 Capsule&#xff08;默认值&#xff09;&#xff1a;胶囊类型 Button("默认样式").height(40)//高度.width(90)//宽度.backgroundColor(#aabbcc)//背景颜色运行结果: Normal&#xff1a;矩形按钮&#xff0c;无圆角 Button({type:ButtonType.Normal}){Te…

防御保护---防火墙综合实验

拓扑图 实验要求 办公区的设备可以通过电信链路和移动链路上网分公司设备可以通过总公司的移动链路和电信链路访问到DMZ区域的HTTP服务器分公司内部的客户端可以通过公网地址访问到内部的服务器FW1和FW2组成主备模式双击热备办公区上网用户限制流量不超过60M&#xff0c;其中销…

人工智能技术应用笔记(二):OpenAI SORA文生视频模型技术报告全文中英对照 (GPT4翻译+人工润色)

目录 Video generation models as world simulators&#xff08;视频生成模型作为世界模拟器&#xff09; Turning visual data into patches &#xff08;将视觉数据转换为图像块&#xff09; Video compression network &#xff08;视频压缩网络&#xff09; Spacetim…

Linux系统中 uboot、内核与文件系统之间的关系

前言&#xff1a; 最近正在学习Linux&#xff0c;总结了一下Linux系统中 uboot、内核与文件系统之间的关系 Linux初学者首先要搞清楚的三个文件: 引导程序(bootoader):uboot.bin/uboot.imx Linux内核镜像: zlmage 文件系统镜像:system.img/rootfs.tar.ba2 初期很多工作都是围…

Eclipse - Format Comment

Eclipse - Format & Comment 1. Correct Indentation2. Format3. Toggle Comment4. Add Block Comment5. Remove Block CommentReferences 1. Correct Indentation Ctrl A: 选择全部代码 Ctrl I: 校正缩进 or right-click -> Source -> Correct Indentation 2. F…

OLMo论文里的模型结构的小白解析

模型参数量 以7B为例&#xff0c;隐藏层为4086&#xff0c;attention heads为32 训练的token量为2.46T 训练策略 超参数 在我们的硬件上优化训练吞吐量&#xff0c;同时最小化损失峰值和缓慢发散的风险来选择超参数 损失峰值&#xff1a;在机器学习中&#xff0c;"损失峰…

RabbitMQ保证消息的可靠性

1. 问题引入 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见的丢失原因包括&#xff1a; 发送时丢失&#xff1a; 生产者发送的消息未送达exchange消息到达exchange后未到达queue MQ宕机&…

【MATLAB GUI】 1. 普通按钮、静态文本和可编辑文本

看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记 文章目录 初步认识普通按钮静态文本和可编辑文本设计一个简易计算机 初步认识普通按钮 任务要求&#xff1a;点击一次“100”按钮&#xff0c;按钮上的文字值就递增1&#xff1b;点击“close”按钮&…

边坡位移监测设备:守护工程安全的前沿科技

随着现代工程建设的飞速发展&#xff0c;边坡位移监测作为预防山体滑坡、泥石流等自然灾害的重要手段&#xff0c;日益受到人们的关注。边坡位移监测设备作为这一领域的关键技术&#xff0c;以其高精度、实时监测的特点&#xff0c;成为守护工程安全的重要武器。 一、边坡位移…

20-k8s中pod的调度-nodeSelector节点选择器

一、概念 我们先创建一个普通的deploy资源&#xff0c;设置为10个副本 [rootk8s231 dns]# cat deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: dm01 spec: replicas: 10 selector: matchLabels: k8s: k8s template: metadata: …

零基础搭建 Kubernetes 集群

零基础搭建 Kubernetes 集群 1、简介 在数字化时代&#xff0c;容器技术已经变成了软件开发和部署的标准&#xff0c;而在众多容器管理工具中&#xff0c;Kubernetes&#xff08;简称为 K8s&#xff09;凭借其高效的资源管理、弹性伸缩和自我修复的能力&#xff0c;成为了行业…

第一个 Angular 项目 - 动态页面

第一个 Angular 项目 - 动态页面 使用的所有技巧都在下面的笔记里&#xff1a; [Angular 基础] - 数据绑定(databinding) [Angular 基础] - 指令(directives) 以上为静态页面&#xff0c;即不涉及到跨组件交流的内容 以下涉及到组件内的沟通&#xff0c;从这开始数据就“活”…

双向bfs P1032 字串变换

传送门https://www.luogu.com.cn/problem/P1032 找一个最短方案&#xff0c;考虑用bfs&#xff08;没试过单向&#xff0c;但是系数很大&#xff09; 更详细的解答 下面是代码理解&#xff08;注释版&#xff09; // Problem: // P1032 [NOIP2002 提高组] 字串变换 // …

分布式学习笔记

1. CAP理论 Consistency&#xff08;一致性&#xff09;&#xff1a;用户访问分布式系统中的任意节点&#xff0c;得到的数据必须一致。 Availability&#xff08;可用性&#xff09;&#xff1a;用户访问集群中的任意健康节点&#xff0c;必须得到相应&#xff0c;而不是超时…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(一)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型&#xff0c;由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”&#xff08;そら sora&#xff09;&#xff0c;即天空之意&#xff0c;以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

svg图片构造QGraphicsSvgItem对象耗时很长的问题解决

目录 1. 问题的提出 2. 问题解决 1. 问题的提出 今天通过一张像素为141 * 214&#xff0c;大小为426KB的svg格式的图片构造QGraphicsSvgItem对象&#xff0c;再通过Qt的Graphics View Framework框架&#xff0c;将QGraphicsSvgItem对象显示到场景视图上&#xff0c;代码如下&…

用GPT-4开启“人类宝藏”

“GPT-4开启人类宝藏”意味着下面几个层面的含义&#xff1a; 知识与信息的访问&#xff1a;GPT-4作为一款强大的语言模型&#xff0c;通过学习海量的数据和信息资源&#xff0c;可以近乎实时地提供人类历史积累的知识、经验与智慧。用户可以通过询问或交互方式获取这些信息&am…