【嵌入式学习】IO网络接口day02.18

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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char *argv[])
{FILE *fp=NULL;if((fp=fopen("./test1.txt","r"))==NULL){perror("错误信息");return -1;}int count=0;char str[100];while(fgets(str,sizeof(str),fp)!=NULL);{for(int i=0;i<strlen(str);i++){if(str[strlen(str)-1]=='\n'){count++;}}}printf("%d\n",count);fclose(fp);return 0;
}

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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char *argv[])
{FILE *fp1=NULL;FILE *fp2=NULL;if((fp1=fopen("./test.txt","w"))==NULL){perror("error");return -1;}if((fp2=fopen("./test1.txt","r"))==NULL){perror("error");return -1;	}char str[5]="";while(fgets(str,sizeof(str),fp2)!=NULL){fputs(str,fp1);}fclose(fp1);fclose(fp2);return 0;
}

3> 完成注册登录功能

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

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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char *argv[])
{FILE *fp1=NULL;FILE *fp2=NULL;char zh[100]="";char ma[100]="";while(1){printf("\t\t******************登录系统****************\n");printf("\t\t*******************1.注册****************\n");printf("\t\t*******************2.登录****************\n");printf("\t\t*******************3.退出****************\n");int num;printf("输入选项:");scanf("%d",&num);switch (num){case 1:{if((fp1=fopen("./zhanghao.txt","a+"))==NULL){perror("错误信息");return -1;}if((fp2=fopen("./mima.txt","a+"))==NULL){perror("错误信息");return -1;}printf("请输入账号:");scanf("%s",zh);fprintf(fp1,"%s\n",zh);printf("请输入密码:"); scanf("%s",ma);fprintf(fp2,"%s\n",ma);fclose(fp1);fclose(fp2);break;}case 2:{if((fp1=fopen("./zhanghao.txt","r"))==NULL){perror("错误信息");return -1;}char zhku[100]="";printf("请输入账号:");scanf("%s",zhku);while(fgets(zh,sizeof(zhku),fp1)!=NULL){zh[strlen(zh)-1]='\0';if(strcmp(zh,zhku)!=0){printf("账号输入错误\n");break;}if(strcmp(zh,zhku)==0){break;}}{if((fp2=fopen("./mima.txt","r"))==NULL){perror("错误信息");return -1;}char maku[100]="";printf("请输入密码:");scanf("%s",maku);while(fgets(ma,sizeof(maku),fp2)!=NULL){ ma[strlen(ma)-1]='\0';if(strcmp(ma,maku)!=0){printf("密码错误\n");continue;}else{printf("登陆成功\n");fclose(fp1);fclose(fp2);break;}}break;}}case 3:goto END;default:printf("输入选项错误\n");}printf("输入任意键按回车结束!\n");while(getchar()!='\n');}END:return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot197基于springboot的毕业设计系统的开发

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的毕业设计系统的开发 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 …

Java六种常用线程创建执行方法

目录 方法一&#xff1a;继承Thread类方法二&#xff1a;实现Runnable接口方法三&#xff1a;实现Callable接口方法四&#xff1a;ThreadPoolExecutor执行Runnable任务方法五&#xff1a;ThreadPoolExecutor执行Callable任务方法六&#xff1a;Executors工具类实现线程池 方法一…

【数据结构】12 堆栈应用:表达式求值

表达式类型 后缀表达式 有一个常量表达式的中缀表达式为&#xff1a;5 6 / 2 - 3 * 4&#xff0c;其后缀形式表示为&#xff1a; 5 6 2 / 3 4 -。后缀表达式的特点是运算符位于两个预算数之后。其前缀表达式为&#xff1a; - 5 / 6 2 3 4。 后缀表达式相比于中缀表达式的…

告警能力中台设计与实践(三)——告警通知

一、告警消息与告警通知 1、告警消息 正如笔者在最开始所写的那样&#xff0c;第三方服务通过调用能力中台的OpenAPI实现告警发起&#xff0c;并且每一次的告警请求都会创建、归档为一条告警消息&#xff08;AlarmMsg&#xff09;。 这样的消息是无状态的&#xff0c;并且对…

递归算法与分治思想

递归算法 直接或间接的调用自身的算法称为递归函数,采用栈结构,先调用的最后返回。 主要形式就是先纵后横,一个分支走到底,再退回一个到兄弟节点,依次回退。 列出递归的三种形式:切蛋糕、递推公式、等价转换。 递归要素: 明确递归得到结果是什么提取重复的逻辑,缩小…

Python教程(26)——Python迭代器和生成器详解

迭代器 Python中的迭代器是一种对象&#xff0c;它可以迭代&#xff08;遍历&#xff09;一个可迭代对象&#xff08;比如列表、元组或字符串&#xff09;的元素。迭代器用于实现迭代器协议&#xff0c;即包含 __iter__() 方法和 __next__() 方法。 迭代器的工作原理是每次调…

15.一种坍缩式的简单——组合模式详解

当曾经的孩子们慢慢步入社会才知道&#xff0c;那年味渐淡的春节就像是疾驰在人生路上的暂停键。 它允许你在隆隆的鞭炮声中静下心来&#xff0c;瞻前顾后&#xff0c;怅然若失。 也允许你在寂静的街道上屏气凝神&#xff0c;倾听自己胸腔里的那团人声鼎沸。 孩子们会明白的&am…

【蓝桥杯】算法模板题(Floyd算法)

一.弗洛伊德算法 用途&#xff1a;用来求解多源点最短路径问题。 思想&#xff1a;Floyd算法又称为插点法&#xff0c;是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。 主要步骤&#xff1a; 1&#xff09;初始化&#xff1a;使用邻接矩阵初始化dis…

MySQL为什么改进LRU算法?

普通LRU算法 LRU = Least Recently Used(最近最少使用): 就是末尾淘汰法,新数据从链表头部加入,释放空间时从末尾淘汰. 当要访问某个页时,如果不在Buffer Pool,需要把该页加载到缓冲池,并且把该缓冲页对应的控制块作为节点添加到LRU链表的头部。当要访问某个页时,如果在…

单主模式和多主模式切换

1 组复制模式切换注意点 组复制有两种运行模式&#xff0c;一种是单主模式&#xff0c;一种是多主模式。这个模式是在整个组中设置的&#xff0c;由 group_replication_single_primary_mode 这个系统变量指定&#xff0c;而且在所有成员上必须保持一致。ON 表示单主模式&#…

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

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

包教包会的Kotlin Flow教程

原文链接 包教包会的Kotlin Flow教程 公众号「稀有猿诉」 Kotlin中的Flow是专门用于处理异步数据流的API&#xff0c;是函数响应式编程范式(Functional Reactive Programming FRP)在Kotlin上的一个实现&#xff0c;并且深度融合了Kotlin的协程。是Kotlin中处理异步数据…