niepeng2015 2021-12-16 17:03 采纳率: 100%
浏览 30
已结题

在用C语言编写教师点名系统时,txt文档中的数据无法正常放入struct中(代码图与相关图如下)

具体代码如下所示(也是网上拿过来用的)

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define SIZE 4
struct student
{char num[20];
char name[10];
int time1;
}std[SIZE];
void save() {
int i;
FILE *fp;
  if((fp=fopen("stu.dat","rb+"))==NULL)
{printf("文件打开失败\n");
exit(0);}
  for(i=0;i<SIZE;i++)
  if(fwrite(&std[i],sizeof(struct student),1,fp)!=1)
/*将内存中的数据输出到磁盘文件中*/
printf("文件保存失败\n");}
void main(){
 int j,i;
 char c;
 FILE *fp;
if((fp=fopen("stu.dat","ab+"))==NULL)  {
      printf("文件打开失败\n");
      exit(0);
      }
    for(i=0;i<SIZE;i++)
    fread(&std[i],sizeof(struct student),1,fp);
    /*将fp所指向的文件中的数据存储到数组std中*/
    printf("*************欢迎使用上课随机点名程序**************\n");
    printf("******输入a: 显示所有同学名称*********\n");
    printf("******输入d: 开始点名*********\n");
    printf("******输入s: 保存点名*********\n");
    printf("******输入b: 点名次数归零*********\n");
    printf("******输入q: 退出*********\n");
    printf("******************************************\n");
//printf("\t\t%s\t\t%s\t\t被点名%d次\n",std[i].num,std[i].name,std[i].time);
    while(1)  {
      c=getchar();
    switch(c)   {
      case 'a': for(i=0;i<SIZE;i++)
      printf("%d000%s",i,std[i].num);
      break;
      case 's': save();
    printf("****文件保存成功!退出请按q****\n");
      break;
      case 'b': for(i=0;i<SIZE;i++)
      std[i].time1=0;
      printf("点名次数归%d\n",std[i].time1);
    break;
    case 'q':exit(0);
    case 'd':
    loop:j=rand()/1000;
    /*调用rand的函数进行点名*/
    if(j==0){
       std[0].time1++;
       printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}
      else if(j==1){
       std[1].time1++;
      printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}
      else if(j==2){
       std[2].time1++;
      printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}
      else if(j==3){
      std[3].time1++;
      printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}
      else goto loop;
    break;}}
     fclose(fp);}


文本内容(学生学号以及姓名)

img


执行结果显示(整个文本内容都放在了i=0的位置)

img

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月24日
    • 修改了问题 12月16日
    • 修改了问题 12月16日
    • 创建了问题 12月16日

    悬赏问题

    • ¥15 mmocr的训练错误,结果全为0
    • ¥15 python的qt5界面
    • ¥15 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀