8.21练习

2024-08-21 23:12
文章标签 练习 8.21

本文主要是介绍8.21练习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.使用分文件编译,实现注册登录界面,使用fgets,fscanf,fpritnf函数

log.h

#ifndef _LOG_H
#define _LOG_H
#include<myhead.h>// 定义一个结构体类型 usr,用于存储用户的账号信息
typedef struct {char name[20];char pass[20];}usr;
// 声明登录函数
int login();
// 声明注册函数
int regist();#endif

main.c

#include"log.h"int main (int argc, const char *argv[])
{while(1){//显示菜单选项printf("\t\t1.注册\n");printf("\t\t2.登录\n");printf("\t\t3.退出\n");printf("请输入要选择的选项:\n");//获取用户的选择char ch;scanf("%c",&ch);getchar();switch(ch){case '1':regist();break;//注册case '2':login();break;//登录case '3':exit(EXIT_SUCCESS);break;//终止程序default:printf("输入错误!");break;}}return 0;
}

login.c

#include"log.h"int login(){// 定义两个用户结构体变量:usr1 用于存储从文件读取的用户信息,cmp 用于存储用户输入的信息usr usr1,cmp;FILE *fp = fopen("./1.txt","r");if(fp==NULL){perror("fp");return -1;}printf("请输入要登录的账号:\n");fgets(cmp.name,sizeof(cmp.name),stdin);printf("请输入要登录的密码:\n");fgets(cmp.pass,sizeof(cmp.pass),stdin);// 去除账号和密码末尾的换行符cmp.name[strlen(cmp.name)-1]='\0';cmp.pass[strlen(cmp.pass)-1]='\0';// 从文件中读取注册的账号和密码fscanf(fp,"%s",usr1.name);
//	usr1.name[strlen(usr1.name)]='\n';
//	usr1.name[strlen(usr1.name)+1]='\0';fscanf(fp,"%s",usr1.pass);
//	usr1.pass[strlen(usr1.pass)]='\n';
//	usr1.pass[strlen(usr1.pass)+1]='\0';// 比较用户输入的账号和密码与文件中的信息是否匹配
if(strcmp(cmp.name,usr1.name)==0&&strcmp(cmp.pass,usr1.pass)==0){printf("登陆成功!\n");}else{printf("账号或密码错误!\n");}fclose(fp);return 0;
}

regist.c

#include"log.h"int regist(){// 打开文件1.txt,使用写模式FILE *fp=fopen("./1.txt","w");if(fp==NULL){perror("fp");return -1;}// 定义用户结构体变量usr a;printf("请输入要注册的姓名:\n");fgets(a.name,sizeof(a.name),stdin);printf("请输入要注册的密码:\n");fgets(a.pass,sizeof(a.pass),stdin);// 将姓名和密码写入文件,按顺序写入fprintf(fp,"%s%s",a.name,a.pass);fclose(fp);return 0;
}

2.使用fread和fwrite拷贝文件

#include <myhead.h>int main(int argc, const char *argv[]) {// 定义文件指针变量FILE *fp, *des;// 打开源文件1.txt,以只读模式打开fp = fopen("./1.txt", "r");if(fp == NULL){perror("源文件打开失败!");return -1;}// 打开目的文件2.txt,以写模式打开des = fopen("2.txt", "w");if(des == NULL){perror("目的文件打开失败!");fclose(fp);return -1;}char buff[1024];// 进入循环,从源文件读取数据并写入到目的文件while(1) {int a = fread(buff, 1, sizeof(buff), fp);fwrite(buff, 1, a, des);// 如果读取到的数据大小为0,说明已到达文件末尾,退出循环if(a == 0){break;}}// 关闭源文件和目的文件fclose(fp);fclose(des);// 返回0表示程序成功执行return 0;
}

这篇关于8.21练习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094559

相关文章

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1(高级消息队列协议)是一种网络协议,它允许遵从该协议的客户端(Publisher或者Consumer)应用程序与遵从该协议的消息中间件代理(Broker,如RabbitMQ)进行通信。 AMQP 0-9-1模型的核心概念包括消息发布者(producers/publisher)、消息(messages)、交换机(exchanges)、

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

MySql 事务练习

事务(transaction) -- 事务 transaction-- 事务是一组操作的集合,是一个不可分割的工作单位,事务会将所有的操作作为一个整体一起向系统提交或撤销请求-- 事务的操作要么同时成功,要么同时失败-- MySql的事务默认是自动提交的,当执行一个DML语句,MySql会立即自动隐式提交事务-- 常见案例:银行转账-- 逻辑:A给B转账1000:1.查询

html css jquery选项卡 代码练习小项目

在学习 html 和 css jquery 结合使用的时候 做好是能尝试做一些简单的小功能,来提高自己的 逻辑能力,熟悉代码的编写语法 下面分享一段代码 使用html css jquery选项卡 代码练习 <div class="box"><dl class="tab"><dd class="active">手机</dd><dd>家电</dd><dd>服装</dd><dd>数码</dd><dd

014.Python爬虫系列_解析练习

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优

如何快速练习键盘盲打

盲打是指在不看键盘的情况下进行打字,这样可以显著提高打字速度和效率。以下是一些练习盲打的方法: 熟悉键盘布局:首先,你需要熟悉键盘上的字母和符号的位置。可以通过键盘图或者键盘贴纸来帮助记忆。 使用在线打字练习工具:有许多在线的打字练习网站,如Typing.com、10FastFingers等,它们提供了不同难度的练习和测试。 练习基本键位:先从学习手指放在键盘上的“家位”开始,通常是左手的

anaconda3下的python编程练习-csv翻译器

相关理解和命令 一、环境配置1、conda命令2、pip命令3、python命令 二、开发思路三、开发步骤 一、环境配置 1、conda命令 镜像源配置 conda config --show channels //查看镜像源conda config --remove-key channels //删除添加源,恢复默认源#添加镜像源conda config --ad

推荐练习键盘盲打的网站

对于初学者来说,以下是一些推荐的在线打字练习网站: 打字侠:这是一个专业的在线打字练习平台,提供科学合理的课程设置和个性化学习计划,适合各个水平的用户。它还提供实时反馈和数据分析,帮助你提升打字速度和准确度。 dazidazi.com:这个网站提供了基础的打字练习,适合初学者从零开始学习打字。 Type.fun打字星球:提供了丰富的盲打课程和科学的打字课程设计,还有诗词歌赋、经典名著等多样

综合DHCP、ACL、NAT、Telnet和PPPoE进行网络设计练习

描述:企业内网和运营商网络如上图所示。 公网IP段:12.1.1.0/24。 内网IP段:192.168.1.0/24。 公网口PPPOE 拨号采用CHAP认证,用户名:admin 密码:Admin@123 财务PC 配置静态IP:192.168.1.8 R1使用模拟器中的AR201型号,作为交换路由一体机,下图的WAN口为E0/0/8口,可以在该接口下配置IP地址。 可以通过

JAVA学习-练习试用Java实现“删除有序数组中的重复项”

问题: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下