工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1678|回复: 7

调试高手进来看看啊,小弟没办法了!

[复制链接]
发表于 2005-12-28 18:20 | 显示全部楼层 |阅读模式
#include<stdio.h>
#include<string.h>
struct score
  {signed math;
   signed english;
   signed computer;};
struct student
   {char num[13];
    char name[25];
    char sex;
    int birth;
    struct score sco;};
XIUGAI()
{
        FILE *fp;
        struct student stu[15];
        struct student xiugai;
        struct student *p;
        int z=sizeof(struct student),i;
        char k='y',cha='n';
        p=stu;
        if((fp=fopen("student.dat","r+b"))==NULL)
        {
                printf("\nERROR opening student file");
                getch();
                return;
        }

        while(k=='y')
        {
                clrscr();
                printf("\t\tMODIFY student's information\n\n\n");
                printf("Enter student number (upto 13 chars.):");
                scanf("%s",xiugai.num);
                rewind(fp);
                for(i=0;(fread((p+i),z,1,fp))==1&&cha=='n';i++)
                {
                                if(cha=='y')
                                break;
                        if(strcmp(xiugai.num,(*(p+i)).num)==0)
                        {
                                cha='y';

                        printf("Number:%s\nName:%s\nSex:%C\nbirth:%d\nMath score:%f\nEnglish score:%f\nComputer core:%f\n\n",(*(p+i)).num,(*(p+i)).name,(*(p+i)).sex,(*(p+i)).birth,(*(p+i)).sco.math,(*(p+i)).sco.english+(*(p+i)).sco.computer);
                                printf("\t\tADD NEW STUDENT INFORMATION\n\n");
                printf("Enter student name (upto 25 chars.):");
                scanf("%s",(*(p+i)).name);
                printf("\nEnter student number (upto 13 chars):");
                scanf("%s",(*(p+i)).num);
                printf("\nEnter studen sex(M OR F) :");
                scanf("%c",&(*(p+i)).sex);
                printf("\nEnter studen birth :");
                scanf("%d",&(*(p+i)).birth);
                printf("\nEnter studen math score :");
                scanf("%d",&(*(p+i)).sco.math);
                printf("\nEnter studen english score :");
                scanf("%d",&(*(p+i)).sco.english);
                printf("\nEnter studen computer score :");
                scanf("%d",&(*(p+i)).sco.computer);
                while((*(p+i)).sco.math<0||(*(p+i)).sco.math>100)
                {
                        printf("\n\tstudent math score  must be between 0 and 100");
                        printf("\nEnter studen math score:");
                        scanf("%ld",&(*(p+i)).sco.math);
                        fflush(stdin);
                }
                while((*(p+i)).sco.english<0||(*(p+i)).sco.english>100)
                {
                        printf("\n\tstudent englsih score must be between 0 and 100");
                        printf("\nEnter studen english score:");
                        scanf("%ld",&(*(p+i)).sco.english);
                        fflush(stdin);
                }
                while((*(p+i)).sco.computer<0||(*(p+i)).sco.computer>100)
                {
                        printf("\n\tstudent computer score must be between 0 and 100");
                        printf("\nEnter studen computer score:");
                        scanf("%ld",&(*(p+i)).sco.computer);}

                                printf("\student information have been added\n");
                                fseek(fp,-z,1);
                                fwrite(&xiugai,z,1,fp);


                }
                fflush(stdin);
                printf("\nhai xiu gai ma?(y/n):");
                scanf("%c",&k);
                cha='n';
        }
        fclose(fp);
}


SHANCHU()


        {struct student stu[15],stu1[15],shanchu;
        struct student *p,*p2;
        FILE *fp
        int z=sizeof(struct student),i,j=0;
        char k='y',cha='n',n;
        p=stu;
        p2=stu1;
        if((fp=fopen("student.dat","rb"))==NULL)
        {
                printf("\nERROR opening student file");
                getch();
                return;
        }

        while(k=='y')
        {
                clrscr();
                printf("\t\tDELETE student information\n\n\n");
                printf("Enter Student number (upto 13 chars.):");
                scanf("%s",shanchu.num);
                rewind(fp);
                for(i=0;(fread((p+i),z,1,fp))==1&&cha=='n';i++)
                {
                        if(strcmp(shanchu.num,(*(p+i)).num)==0)
                        {
                                printf("Number:%s\nName:%s\nSex:%C\nbirth:%d\nMath score:%f\nEnglish score:%f\nComputer core:%f\n\n",(*(p+i)).num,(*(p+i)).name,(*(p+i)).sex,(*(p+i)).birth,(*(p+i)).sco.math,(*(p+i)).sco.english(*(p+i)).sco.computer);
                                printf("shan chu ma (y/n)?:");
                                fflush(stdin);
                                scanf("%c",&n);
                        }
                        else
                        {
                                *(p2+j)=*(p+i);
                                j++;
                        }
                }
                if(n=='y')
                {
                        printf("The Student information have been deleted");
                        fclose(fp);
                        if((fp=fopen("student.dat","wb"))==NULL)
                        {
                                printf("\nERROR opening student file");
                                getch();
                                return;
                        }
                        fflush(fp);
                        for(i=0;i<j;i++)
                        fwrite(p2+i,z,1,fp);
                }
                fflush(stdin);
                printf("\nhai shan chu ma? (y/n):");
                scanf("%c",&k);
        }
        fclose(fp);
}
运行时出错,说是没有";" 晕啊,找了老半天也没发现错在哪里,高手帮小弟一下啊
 楼主| 发表于 2005-12-28 18:23 | 显示全部楼层
以上是main()里的两个定义涵数,高手们帮看一下
回复

使用道具 举报

发表于 2005-12-28 21:19 | 显示全部楼层
楼主好像有点依赖心理。

建议你自己调试,然后将中间信息错误信息还有自己的疑问或看法贴出来,这样大家比较容易帮你,同时你才可以真正学到东西。

要不像你这样全部源程序贴出来,想帮你的人看得费劲,就算帮了你你也学不到东西,更浪费了帮你的人的时间。
回复

使用道具 举报

发表于 2005-12-28 22:21 | 显示全部楼层
最讨厌没有注释的代码了.
回复

使用道具 举报

 楼主| 发表于 2005-12-29 10:08 | 显示全部楼层
呵呵,是是是,各位批评的是,要不怎么说小弟是新手呢,3楼的大哥真是厉害,一看就看出了我的依赖心理,是的,是有点,只是因为时间太赶了,想得到高手们的帮忙,知道错了,下次一定改!
   还有就是注释的问题,不是我不想注释,只是如果要在这贴子上注释就太浪费时间了,(我知道这样又会浪费帮我的人的时间),要是写在程序里的话,我用的是纯C.里面不允许出现中文字符,各位是知道的.
回复

使用道具 举报

 楼主| 发表于 2005-12-29 10:10 | 显示全部楼层
我觉得3楼大哥说的很有道理,小弟听进去了!念小弟初犯,给次机会啊,不要这样就不理人了啊,好不好?呵呵.........
回复

使用道具 举报

发表于 2005-12-29 10:45 | 显示全部楼层
在程序中写注释是一种好习惯.

谁说c不可以用中文注释的?

别当我没用过c呀.怎么说我也用tc用了一段时间的啦.

在/* */里就可以写啦嘛.

只是你在tc里显示是乱码而已.

但是在记事本里还是可以看得到的呀.
回复

使用道具 举报

 楼主| 发表于 2005-12-29 13:12 | 显示全部楼层
哦,原来是这个意思,这样的话,小弟会,恩,小弟记下了,呵呵,又学了一招!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-8-30 17:26

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表