| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 440 人关注过本帖
标题:求大神!~没有一点错,却输出不了文件里的信息。。。
只看楼主 加入收藏
zhangyuhao00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-12-25
收藏
 问题点数:0 回复次数:8 
求大神!~没有一点错,却输出不了文件里的信息。。。
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#define LEN sizeof(struct student)
#define FORMAT "%-10d%-15s%-12.1ls%-12.1ls%-12.11s%\n"
#define DATA stu[i].num,stu[i].name,stu[i].shijian,stu[i].liyou,stu[i].xuke
void menu();
struct student
{
  int num;
  char name[15];
  char shijian;
  char liyou;
  char xuke;
};
struct student stu[50];
void chakan();
void qingjia();
int main()
{
图片附件: 游客没有浏览图片的权限,请 登录注册

    int n;
    menu();
    scanf("%d",&n);
    while(n)
    {
        switch(n){
        case 1:qingjia();
        break;
        case 3:chakan();
        break;
        default:
        break;
        }
        getch();
    menu();
    scanf("%d",&n);
    }
    return 0;
}
void menu()
{
  printf("\n\n\n\n\n");
  printf("\t\t|---------------------STUDENT------------------------|\n");
  printf("\t\t|\t 0. exit                                     |\n");
  printf("\t\t|\t 1. Student Interface                        |\n");
  printf("\t\t|\t 2. Administrator Interface                  |\n");
  printf("\t\t|\t 3. Teacher Interface                        |\n");
  printf("\t\t|----------------------------------------------------|\n\n");
  printf("\t\t\tchoose(0-3):");
}

void qingjia()
{
 int i,m=0;
  char ch[20];
  FILE *fp;
  if((fp=fopen("data.txt","a+"))==NULL)
     {
         printf("不能打开\n");
     return;
     }
  while(!feof(fp)) {
   if(fread(&stu[m] ,LEN,1,fp)==1)
    m++;
  }
  fclose(fp);
  if(m==0)
   printf("没有记录!\n");
  else
  {
   system("cls");
          chakan();
  }
  if((fp=fopen("data.txt","wb"))==NULL)
     { printf("不能打开\n");
     return;}
  for(i=0;i<m;i++)
  {
   fwrite(&stu[i] ,LEN,1,fp);
  }
    printf("请输入(y/n):");
    scanf("%s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
    {
  printf("请输入学号:");
  scanf("%d",&stu[m].num);/*输入学生学号*/
        for(i=0;i<m;i++)
   if(stu[i].num==stu[m].num)
   {
    printf("此学号已存在,按任意键继续!");
    getch();
    fclose(fp);
    return;
   }
   printf("姓名:");
   scanf("%s",stu[m].name);
   getchar();
   printf("请假理由:");
   scanf("%s",&stu[m].liyou);
   getchar();
   printf("请假时间:");
   scanf("%s",&stu[m].shijian);
   getchar();
   printf("是否许可:");
   scanf("%s",&stu[m].xuke);
   getchar();
     if(fwrite(&stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/
       { printf("不能保存!"); getch(); }
     else { printf("%s 已保存!\n",stu[m].name);m++;}
     printf("是否继续?(y/n):");/*询问是否继续*/
     scanf("%s",ch);
  }
  fclose(fp);
  printf("OK!\n");
 }


void chakan()
 { FILE *fp;
   int i,m=0;
   fp=fopen("data.txt","rb");
   while(!feof(fp))
   {
   if(fread(&stu[m] ,LEN,1,fp)==1)
   m++;
   }
   fclose(fp);
   printf("number    name           liyou    shijian     xuke \t\n");
   for(i=0;i<m;i++)
       {
    printf(FORMAT,DATA);//
       }
       }
搜索更多相关主题的帖子: shijian include 信息 
2014-12-25 17:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
没有一点错

授人以渔,不授人以鱼。
2014-12-25 22:30
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
怎么会没有一点错,难道你认为电脑错了?

一片落叶掉进了回忆的流年。
2014-12-26 00:31
zhangyuhao00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-12-25
收藏
得分:0 
但是从文件里输出数据却出现错误。。。
2014-12-27 10:46
zhangyuhao00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-12-25
收藏
得分:0 
回复 3楼 诸葛欧阳
但是错在哪里呢?!~
2014-12-27 10:46
zhangyuhao00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-12-25
收藏
得分:0 
回复 2楼 TonyDeng
但为什么会出现exe停止工作?~
2014-12-27 10:47
czsjason
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-11-28
收藏
得分:0 
将你所有的代码行分别注释一次试试,我写的时候也遇到过这样的问题,一行行注释后发现了某行代码输出后会出错,才改回来的
2014-12-27 16:05
殇回忆
Rank: 2
等 级:论坛游民
帖 子:11
专家分:12
注 册:2014-12-20
收藏
得分:0 
scanf("%s",ch);这行的ch变成&ch
scanf("%s",stu[m].name);    stu[m].name加&
第二个scanf("%s",ch);加&
试试行不行吧
2014-12-27 17:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这种问题95%是野指针和越界访问造成,围绕这个自己找逻辑错误呗。编译不出错,并不表示程序没有逻辑错误,你写1+1=3也符合数学语法,不过是逻辑错误的方程罢了。不要以为编译不错,程序就是“没有一点错”。凡是不正确和不符合预期的现象,就是错!

[ 本帖最后由 TonyDeng 于 2014-12-27 23:03 编辑 ]

授人以渔,不授人以鱼。
2014-12-27 23:02
快速回复:求大神!~没有一点错,却输出不了文件里的信息。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027578 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved