【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )
文章目录
- 一、学生管理系统
- 二、代码示例
一、学生管理系统
前两篇博客
- 【C 语言】文件操作 ( 将结构体写出到文件中并读取结构体数据 | 将结构体数组写出到文件中并读取结构体数组数据 )
- 【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
中 , 将结构体 ( 数组 ) 数据写入到了文件中 , 然后又从文件中读取 结构体 ( 数组 ) 并打印出来 ;
之前写入 , 读取的 结构体 ( 数组 ) 的个数都是固定的 , 本篇博客实现从命令行接收结构体数据 , 然后保存到文件中 ;
做一个简单的学生管理系统 , 手动将学生数据录入到文件中 ;
scanf 函数原型 :
#include <stdio.h>
int scanf(const char * restrict format,...);
函数中 , 第一个参数是格式字符串 , 后面的参数都是接收相应变量的指针 ;
使用结构体成员接收上述变量 , 然后写出到文件中 , 就实现了从命令行接收数据 , 写出到文件中 ;
二、代码示例
#include <stdio.h>/* 定义结构体, 存储一个字符串和年龄 */
struct student
{char name[20];int age;
};int main()
{// 要写入文件的结构体struct student s1 = {0};// 打开要写入的文件FILE *p = fopen("D:/File/student.dat", "w");// 打开失败直接退出if(p == NULL)return 0;while (1){// 提示输入学生名字printf("input name:\n");// 阻塞等待命令行中用户输入学生名字scanf("%s", s1.name);// 如果用户输入 quit , 则退出循环 , 保存文件if(strcmp(s1.name, "quit")==0)break;// 提示输入某个学生的年龄printf("input %s's age:\n", s1.name);// 命令行阻塞等待用户输入学生年龄scanf("%d", &s1.age);// 将结构体写出到文件中fwrite(&s1, 1, sizeof (struct student), p);}// 关闭文件fclose(p);// 读取文件中的结构体printf("\ncurrent students info :\n");// 存储读取到的结构体数据struct student s2= {0};// 打开文件FILE *p2 = fopen("D:/File/student.dat", "r");// 如果打开失败, 退出if(p2 == NULL)return 0;while(1){// 每次读取一个结构体,fread(&s2, 1, sizeof (struct student), p2);// 如果读取到文件末尾, 则退出循环if(feof(p2))break;// 打印读取到的结构体数据printf("%s, %d\n", s2.name, s2.age);}return 0;
}
执行结果 :
【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )相关推荐
- 【C 语言】文件操作 ( 学生管理系统 | 插入数据 | 查询数据 | 删除数据 )
文章目录 一.学生管理系统 1.插入数据 2.查询数据 3.删除数据 二.完整代码 一.学生管理系统 实现一个简易学生管理系统 , 验证文件操作 ; 1.插入数据 从命令行接收数据 , 放入结构体成员 ...
- C语言linux getopt_long()函数(命令行解析)(getopt、getopt_long_only)(短选项 -,长选项 --)(option结构体)(optind、optarg变量)
参考文章:浅谈linux的命令行解析参数之getopt_long函数 文章目录 前言 一.关于命令行参数 二.getopt_long函数 参数以及返回值介绍(以上三个函数都适用): 1.argc和ar ...
- cmd中mysql的操作语句,mysql命令行操作大全 mysql命令行操作总结
摘要 腾兴网为您分享:mysql命令行操作大全 mysql命令行操作总结,悦作业,英语字典,银万财富,小书亭等软件知识,以及webex,过租号,宁夏教育云,百货通,准妈妈课堂,京客隆网上超市,壁纸生成 ...
- c语言字符密码验证码,c语言下的学生管理系统(含密码加密和验证码).docx
c语言下的学生管理系统(含密码加密和验证码).docx #include #include #include #include #include #define N 20void input();// ...
- java用链表做学生系统_C语言链表实现学生管理系统
本文实例为大家分享了C语言链表实现学生管理系统的具体代码,供大家参考,具体内容如下 #include #include #include #include #include #include usin ...
- XP下,文件夹添加右键命令行
原文:XP下,文件夹添加右键命令行 总共有3种方式: --------------------1---------------------------------------------------- ...
- 媒体文件转换工具ffmpeg命令行汇总(包括精准裁剪音视频)
转自:https://www.cnblogs.com/renhui/p/9223969.html 这个blog有一系列的ffmpeg的源码分析,建议系统读一下. 这里我重点关注的是精准裁剪视频,没想到 ...
- ssh升级后+sftp+java_java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行(改进)...
我写过一篇java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行,现在想来,觉得调用方式太过于绕,不符合我写程序的风格,所以进行了改进. 参数类,用于配置连接的参数,SshConfigur ...
- mysql怎么用命令行导出sql文件_使用mysql命令行导出sql_MySQL
bitsCN.com 使用mysql命令行导出sql 其实很简单,只需2个步骤,首先进入mysql命令行,输入:use 数据库名,其次输入:source test.sql 就可以把Test表的数据全部 ...
最新文章
- 一不小心,删错了,还把回收站清空了,咋办啊?
- ubuntu: Authentication failure的解决办法
- 解决从github上拉取代码慢的问题
- 设置datalist 中option的宽度_Flutter中http请求抓包的完美解决方案
- Find a way
- 基于canvas的图片压缩函数实现
- 韦东山 IMX6ULL和正点原子_GPIO和Pinctrl子系统的使用在100ASK_IMX6ULL上机实验
- mysql编程语法_MYSQL语法(一)
- 拥有这个证书的医务人员恭喜了,国家正式通知……
- mysql 大量close wait_线上大量CLOSE_WAIT原因排查
- MySQL查询语句常用函数总结
- uniapp App权限配置
- android 视频播放器硬解码,万能视频播放器VPlayer:唯一真正硬解码
- 9大日常不良习惯致癌
- 请注意:黑客开始用云隐藏IP地址
- Robocup3d比赛环境的搭建及常用函数简介
- 【Debug日记】fatal: cannot lock ref ‘refs/heads/feature/CXX_Config‘: ‘refs/heads/feature‘ exists;
- 静态链表、循环链表、双向链表
- CAD转Excel该如何转换呢?
- 今年我国面临的移动应用数据安全问题和解决方案