m0_60248803 2021-07-17 14:45 采纳率: 76.5%
浏览 41
已采纳

whlie上面的scanf里的char值该如何更改才能运行出来

img

img

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2021-07-17 18:31
    关注

    修改如下,供参考:

    #include<stdio.h>
    #include <malloc.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<dos.h>
    #include<string.h>
    #include<windows.h>
    typedef struct Equ
    {
        char   num [10];
        char   kind[12];
        char   name[18];
        char   price[20];  //价格也是字符型?
        char   buy_time[20];
        char   lab[8];
        struct Equ*next;
    }Equ;
    
    Equ stu[100];
    int LEN = sizeof(struct Equ);
    
    void in(Equ stu[])
    {
        int  i,m=0;
        char ch[2]="y";
        FILE *fp;
        if((fp=fopen("data.txt","r"))==NULL){
              printf("can not open file!\n");
              return;
        }
        while(1){
              if(fread(&stu[m],LEN,1,fp)!=1) break;
              m++;
        }
        fclose(fp);
        while(ch[0] == 'Y' || ch[0] == 'y'){
              printf("Input num:");
              while(1){
                     scanf("%s",stu[m].num);//输入设备编号
                     for(i=0;i<m;i++){
                          if(strcmp(stu[i].num,stu[m].num)==0){
                               printf("此编号已存在,请重新输入编号:");
                               break;
                          }
                     }
                     if(i==m)break;
              }
              printf("kind:");
              getchar();
              scanf("%s",stu[m].kind);//输入设备种类
              printf("name:");
              getchar();
              scanf("%s",stu[m].name);//输入设备名称
              printf("price:");
              getchar();
              scanf("%s",stu[m].price);//输入设备价格
              printf("buy_time:");
              getchar();
              scanf("%s",stu[m].buy_time);//输入购买时间
              printf("lab:");
              getchar();
              scanf("%s",stu[m].lab);  //输入所属实验室
              m++;
              printf("please input again(y/n):");
              getchar();
              scanf("%s",ch);
        }
        if((fp=fopen("data.txt","w"))==NULL){
              printf("file write fail!\n");
              return;
        }
        for(i=0;i<m;i++)
              fwrite(&stu[i],LEN,1,fp);
        fclose(fp);
        printf("OK!\n");
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 7月17日
  • 创建了问题 7月17日

悬赏问题

  • ¥20 有偿,学生成绩信息管理系统
  • ¥15 Arduino电机和openmv连接异常
  • ¥15 Arcgis河网分级报错
  • ¥200 java+appium2.1+idea
  • ¥20 请帮我做一个EXE的去重TXT文本
  • ¥15 工价表引用工艺路线,应如何制作py和xml文件
  • ¥15 根据历史数据,推荐问题类型
  • ¥15 需要仿真图,简单的二阶系统实例
  • ¥15 stm32光控照明仿真
  • ¥15 使用人工智能的方法生成满足一定统计参数要求的随机数序列