IO进程线程day1作业

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.hqwc.cn/news/475946.html

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

相关文章

sonar-java 自定义规则

前言 最近在搞代码质量方面的项目&#xff0c;主要是针对Java语言&#xff0c;其他语言实际上也可以执行检查&#xff0c;核心原理是一样的&#xff0c;都是静态代码扫描&#xff0c;如果需要进行动态代码运行验证则可以通过单元测试的方式。以其中一个示例&#xff0c;实现自…

防火墙综合拓扑

要求&#xff1a; 1.办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 在FW1上 做安全策略 做NAT策略 这样&#xff0c;两条线就负载均衡了&#xff0c;并且相当于做了一个备份&#xff0c;一个断了就走另一条 2.分公司…

信息安全认证 | CISP证书怎么样?值得考吗?

HCIE考证研究所的朋友们&#xff0c;新年快乐&#xff01; 今天给大家说说CISP证书&#xff0c;新的一年祝大家逢考必过啊~ 01 考注册信息安全工程师证书的用处 CISP证书可作为学识和技能证明&#xff1b;求职、任职、晋升、加薪的资格凭证&#xff1b;用人单位招聘、录用劳动…

《富爸爸:巴比伦最富有的人》读书笔记

目录 作者简介 感悟 经典摘录 观点&#xff1a; 支付给自己(理解是投资自己) 观点&#xff1a;源源不断地放入金币 观点&#xff1a; 把收入的一部分留给我自己 观点&#xff1a; 从专业的人士得到建议 观点&#xff1a;一旦为自己规定了任务&#xff0c;就一定要完成 …

模型超参数寻优

参考某篇QSAR的sci论文设置 根据上图&#xff0c;我设置我的XGBoost模型&#xff1a; # 定义要搜索的超参数的候选值 param_grid {model__learning_rate: [0.1, 0.01, 0.001], # 调整学习率model__n_estimators: [50, 100, 200, 300,400,500], # 调整树的数量model__max_de…

SG7050VAN晶体振荡器规格书

SG7050VAN 晶振是EPSON/爱普生的一款额定频率73.5 MHz to 700 MHz的石英晶体振荡器&#xff0c;4脚贴片&#xff0c;7050封装常规有源晶振&#xff0c;具有小尺寸&#xff0c;高稳定性。该款有源晶体振荡器&#xff0c;可以在B : -20 C to 70 C / G : -40 C to 85 C C的温度内稳…

《苍穹外卖》知识梳理P9-定时任务、来单提醒与用户催单

一.定时任务 实现定时任务可以使用spring家族中的sprinig-task&#xff1b; 1.1 spring-task spring-task是Spring框架的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑&#xff1b; 应用场景 信用卡每月归还贷款提醒&#xff0c;定时任务检查&#xff…

嵌入式面试:瑞芯微

文章目录 一、2024 秋招1.1 IIC的速率范围 &#xff1a;1.2 linux驱动子系统汇总 &#xff1a;1.3 linux关抢占情况汇总 &#xff1a;1.4 操作或者读写一个文件时&#xff0c;从用户态到内核态再到物理介质的流程(考点&#xff1a;虚拟文件系统) &#xff1a; 一、2024 秋招 1…

电商+支付双系统项目------设计数据库

这篇文章将详细介绍电商支付双系统项目的数据库设计。数据库在该项目中扮演着至关重要的角色&#xff0c;它负责存储和管理用户信息、商品数据、订单记录以及支付交易等关键数据。通过精心设计和优化数据库结构&#xff0c;可以实现高效的数据存储和检索&#xff0c;确保系统的…

多维时序 | Matlab实现基于VMD-DBO-LSTM、VMD-LSTM、LSTM的多变量时间序列预测

多维时序 | Matlab实现基于VMD-DBO-LSTM、VMD-LSTM、LSTM的多变量时间序列预测 目录 多维时序 | Matlab实现基于VMD-DBO-LSTM、VMD-LSTM、LSTM的多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现基于VMD-DBO-LSTM、VMD-LSTM、LSTM的多变量时间…

Java面试第一站:计算机网络基础知识

该系列会持续更新&#xff0c;关注我&#xff0c;第一时间获取我的最新动态哟 Java面试中&#xff0c;经常会问到跟计算机网络知识相关的考点&#xff0c;有的小伙伴不是很明白。考察网络知识有什么意义&#xff1f; 因为编程的时候&#xff0c;多数的情况下是不用我们来编写 …

深度学习与计算机视觉 | 实用CV开源项目汇总(有github代码链接,建议收藏!)

本文来源公众号“深度学习与计算机视觉”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;【建议收藏】实用CV开源项目汇总&#xff08;文末有彩蛋~&#xff09; 01 Trace.moe 图像反向搜索动漫场景&#xff0c;使用动漫截图搜索该…