文章目录

  • 一、学生管理系统
  • 二、代码示例

一、学生管理系统


前两篇博客

  • 【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 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )相关推荐

  1. 【C 语言】文件操作 ( 学生管理系统 | 插入数据 | 查询数据 | 删除数据 )

    文章目录 一.学生管理系统 1.插入数据 2.查询数据 3.删除数据 二.完整代码 一.学生管理系统 实现一个简易学生管理系统 , 验证文件操作 ; 1.插入数据 从命令行接收数据 , 放入结构体成员 ...

  2. C语言linux getopt_long()函数(命令行解析)(getopt、getopt_long_only)(短选项 -,长选项 --)(option结构体)(optind、optarg变量)

    参考文章:浅谈linux的命令行解析参数之getopt_long函数 文章目录 前言 一.关于命令行参数 二.getopt_long函数 参数以及返回值介绍(以上三个函数都适用): 1.argc和ar ...

  3. cmd中mysql的操作语句,mysql命令行操作大全 mysql命令行操作总结

    摘要 腾兴网为您分享:mysql命令行操作大全 mysql命令行操作总结,悦作业,英语字典,银万财富,小书亭等软件知识,以及webex,过租号,宁夏教育云,百货通,准妈妈课堂,京客隆网上超市,壁纸生成 ...

  4. c语言字符密码验证码,c语言下的学生管理系统(含密码加密和验证码).docx

    c语言下的学生管理系统(含密码加密和验证码).docx #include #include #include #include #include #define N 20void input();// ...

  5. java用链表做学生系统_C语言链表实现学生管理系统

    本文实例为大家分享了C语言链表实现学生管理系统的具体代码,供大家参考,具体内容如下 #include #include #include #include #include #include usin ...

  6. XP下,文件夹添加右键命令行

    原文:XP下,文件夹添加右键命令行 总共有3种方式: --------------------1---------------------------------------------------- ...

  7. 媒体文件转换工具ffmpeg命令行汇总(包括精准裁剪音视频)

    转自:https://www.cnblogs.com/renhui/p/9223969.html 这个blog有一系列的ffmpeg的源码分析,建议系统读一下. 这里我重点关注的是精准裁剪视频,没想到 ...

  8. ssh升级后+sftp+java_java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行(改进)...

    我写过一篇java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行,现在想来,觉得调用方式太过于绕,不符合我写程序的风格,所以进行了改进. 参数类,用于配置连接的参数,SshConfigur ...

  9. mysql怎么用命令行导出sql文件_使用mysql命令行导出sql_MySQL

    bitsCN.com 使用mysql命令行导出sql 其实很简单,只需2个步骤,首先进入mysql命令行,输入:use 数据库名,其次输入:source test.sql 就可以把Test表的数据全部 ...

最新文章

  1. 一不小心,删错了,还把回收站清空了,咋办啊?
  2. ubuntu: Authentication failure的解决办法
  3. 解决从github上拉取代码慢的问题
  4. 设置datalist 中option的宽度_Flutter中http请求抓包的完美解决方案
  5. Find a way
  6. 基于canvas的图片压缩函数实现
  7. 韦东山 IMX6ULL和正点原子_GPIO和Pinctrl子系统的使用在100ASK_IMX6ULL上机实验
  8. mysql编程语法_MYSQL语法(一)
  9. 拥有这个证书的医务人员恭喜了,国家正式通知……
  10. mysql 大量close wait_线上大量CLOSE_WAIT原因排查
  11. MySQL查询语句常用函数总结
  12. uniapp App权限配置
  13. android 视频播放器硬解码,万能视频播放器VPlayer:唯一真正硬解码
  14. 9大日常不良习惯致癌
  15. 请注意:黑客开始用云隐藏IP地址
  16. Robocup3d比赛环境的搭建及常用函数简介
  17. 【Debug日记】fatal: cannot lock ref ‘refs/heads/feature/CXX_Config‘: ‘refs/heads/feature‘ exists;
  18. 静态链表、循环链表、双向链表
  19. CAD转Excel该如何转换呢?
  20. 今年我国面临的移动应用数据安全问题和解决方案

热门文章

  1. 第二次作业(个人项目实践)
  2. Lua 函数、闭包、尾调用总结
  3. oschina android版源码中的颜色值
  4. MSSQL2000 数据库文件迁移到 MSSQL2005 可能要用的一些命令
  5. 支付宝接口参数调用相关
  6. 【转】Robot Framework 快速入门
  7. 从csv文件批量创建AD用户,带源码。
  8. UIApplication shared application用法总结
  9. python学习笔记(生成xml)
  10. redis集群安装和java应用