当前位置: 首页 > news >正文

标准IO输入输出

1、完成标准io的单字符、字符串、格式化、模块化实现两个文件的拷贝;

//单字符拷贝
#include <myhead.h>
int main(int argc, const char *argv[])
{//判断是否有3个文件传入if(3 != argc){fputs("input file error:",stderr);return -1;}//判断源文件是否打开成功FILE * sfp = fopen(argv[1],"r");if(sfp == 0){perror("fopen sfp error");return -1;}//判断目标文件是否打开成功FILE * dfp = fopen(argv[2],"w");if(dfp == 0){perror("fopen dsp error");return -1;}//拷贝while(1){printf("%d\n", ftell(sfp));int res = fgetc(sfp);if(feof(sfp)){printf("%d\n", ftell(sfp));break;}//	if(res == EOF){//	break;//	}fputc(res,dfp);}//关闭源文件、目标文件fclose(sfp);fclose(dfp);return 0;
}
//字符串拷贝
#include <myhead.h>
int main(int argc, const char *argv[])
{//判断是否有3个文件传入if(3 != argc){fputs("input file error:",stderr);return -1;}//判断源文件是否打开成功FILE * sfp = fopen(argv[1],"r");if(sfp == 0){perror("fopen sfp error");return -1;}//判断目标文件是否打开成功FILE * dfp = fopen(argv[2],"w");if(dfp == 0){perror("fopen dsp error");return -1;}//拷贝char tg[10] = "";while(1){char * res = fgets(tg,sizeof(tg),sfp);if( res == 0 ){break;}fputs(tg,dfp);}//关闭源文件、目标文件fclose(sfp);fclose(dfp);return 0;
}
//格式符拷贝
#include <myhead.h>
int main(int argc, const char *argv[])
{//判断是否有3个文件传入if(3 != argc){fputs("input file error:",stderr);return -1;}//判断源文件是否打开成功FILE * sfp = fopen(argv[1],"r");if(sfp == 0){perror("fopen sfp error");return -1;}//判断目标文件是否打开成功FILE * dfp = fopen(argv[2],"w");if(dfp == 0){perror("fopen dsp error");return -1;}//拷贝char tg;while(1){int res = fscanf(sfp,"%c",&tg);if(res == EOF){break;}fprintf(dfp,"%c",tg);}//关闭源文件、目标文件fclose(sfp);fclose(dfp);return 0;
}
//模块化拷贝
#include <myhead.h>
int main(int argc, const char *argv[])
{//判断是否有3个文件传入if(3 != argc){fputs("input file error:",stderr);return -1;}//判断源文件是否打开成功FILE * sfp = fopen(argv[1],"r");if(sfp == 0){perror("fopen sfp error");return -1;}//判断目标文件是否打开成功FILE * dfp = fopen(argv[2],"w");if(dfp == 0){perror("fopen dsp error");return -1;}//拷贝char tg[128] = "";while(!feof(sfp)){int res = fread(tg,1,sizeof(tg),sfp);
//		if(res == 0){
//			break;
//		}fwrite(tg,1,res,dfp);}//关闭源文件、目标文件fclose(sfp);fclose(dfp);return 0;
}

2、实现注册和登录功能,将注册账号和密码存储到文件中,登录时遍历文件如果存在就登录成功否则登录失败

#include <myhead.h>
//用户结构体
typedef struct
{char name[10];char passwd[16];
}usr;//注册
int register_newusr()
{//追加的方式打开文件FILE *fp = fopen("./usr.account.txt","a+");if(fp == NULL){perror("fopen error");return -1;}usr new,old;//用户输入scanf("%s %s", new.name, new.passwd);//移动文件光标到文件头rewind(fp);//遍历判断用户输入与源文件里的是否有相同的while(1){//遍历源文件int res = fscanf(fp,"%s %s", old.name , old.passwd);printf("res =%d\n",res);if( res == EOF ){	break;}//比较用户名if( strcmp(new.name , old.name) == 0 ){printf("创建失败,该用户已存在!\n");return 0;}}//将用户输入的存入源文件int res1 = fprintf(fp,"%s %s\n", new.name, new.passwd);//判断成功printf("%s %s\n",new.name , new.passwd);if(res1 != EOF){printf("创建成功!\n");}//关闭文件fclose(fp);return 0;
}//登录
int load_usr()
{//打开文件FILE * fp = fopen("./usr.account.txt","r");if(fp == NULL){perror("fopen error");return -1;}usr temp,old;//用户输入scanf("%s %s", temp.name, temp.passwd);//遍历源文件是否有存档while(1){//遍历源文件int res = fscanf(fp,"%s %s",old.name,old.passwd);if(res == EOF){break;}//比较是否相同if( strcmp(temp.name , old.name) == 0 && strcmp(temp.passwd , old.passwd) == 0 ){printf("登录成功!\n");return 0;}}//遍历完仍没有登录提示printf("用户名或密码错误!\n");		//关闭文件fclose(fp);return 0;
}int main(int argc, const char *argv[])
{while(1){printf("------登录界面------\n");printf("1、注册\n");printf("2、登录\n");printf("0、退出\n");int choice;printf("请输入你的选择:");scanf("%d",&choice);switch(choice){case 1:register_newusr();break;case 2:load_usr();break;case 0:return 0;break;default :printf("选择有错,请重新选择:\n");break;}}return 0;
}


http://www.mrgr.cn/news/52788.html

相关文章:

  • 读数据工程之道:设计和构建健壮的数据系统12开源软件
  • CMake技术细节:显示编译命令
  • YoloV9改进策略:Block改进|使用ContextAggregation模块改善RepNCSP模块|即插即用
  • CANFD报文CRC16校验码计算详解
  • 十一、pico+Unity交互开发教程——手指触控交互(Poke Interaction)
  • Nginx开发框架
  • 【网络】IP协议的地址管理
  • Air780E的固件的远程升级,一文讲清
  • 第十七章 Java多线程--线程池-ScheduledThreadPoolExecutor
  • 基于深度学习的在线小分子Kinome选择性预测平台的Python实现-更加的详细版本
  • Linux入门:进程状态,优先级与进程调度
  • Redis持久化与淘汰机制深度解析
  • 互联网新赛道 互联网转型 互联网前景
  • ICM20948 DMP代码详解(85)
  • 2024.10月17日- 关于Vue2-(2)
  • 集成电路学习:什么是WLAN无线局域网
  • Linux操作系统分析实验-文件操作,实验三
  • 图计算框架之Giraph
  • 向左,向右,都是人生
  • 非常漂亮html公告弹窗代码