| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1344 人关注过本帖
标题:求助帖 关于函数调用函数的问题
取消只看楼主 加入收藏
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
结帖率:100%
收藏
 问题点数:0 回复次数:22 
求助帖 关于函数调用函数的问题
想通过input函数调用save函数达到输入同时保存信息到文件的功能
现在编译执行都通过  就是完全没有save的功能
代码如下:
void input(TEACHER *data, int *len)
{
    int num;
    void save(TEACHER *data, int len);
   
    putchar('\n');
    printf("%s\n", "请输入新的记录,如果需要退出当前菜单请输入-1.");
    printf("%s\n", "格式:\n职工号\n");
    printf("%s\n", "姓名 职称 性别 年龄 教学效果综合评分");
    putchar('\n');
    printf("如:\n");
    printf("1\n");
    printf("李白 副教授 男 25 92\n");
    scanf("%d", &num);
   
    while(num != -1)
    {
        data[*len].num = num;
        scanf("%s %s %s %d %lf", data[*len].name, &data[*len].level, &data[*len].sex, &data[*len].age, &data[*len].score);
        (*len)++;
        scanf("%d", &num);
    }
   
    void save(TEACHER *data,int len);
}

void save(TEACHER *data, int len)
{
    int i;
    FILE *fp;
   
    fp=fopen("d:\\教师信息统计.txt","w");
    fprintf(fp,"%10s", "职工号");
    fprintf(fp,"%10s", "职称");
    fprintf(fp,"%10s", "姓名");
    fprintf(fp,"%10s", "性别");
    fprintf(fp,"%10s", "年龄");
    fprintf(fp,"%12s", "教学效果综合评分");
    fprintf(fp,"========================================================================\n");
    putchar('\n');
   
    for (i = 0; i< len; i++)
    {
        fprintf(fp,"%10d", data[i].num);
        fprintf(fp,"%10s", data[i].name);
        fprintf(fp,"%10s", data[i].level);
        fprintf(fp,"%10s", data[i].sex);
        fprintf(fp,"%10d", data[i].age);
        fprintf(fp,"%12lf", data[i].score);

    }
   
    fprintf(fp,"========================================================================\n");
    fclose(fp);
    printf("文件已保存到\"成绩统计表.txt\"");
    getchar();
    getchar();
}
搜索更多相关主题的帖子: 信息 李白 教学 记录 副教授 
2015-09-06 18:32
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
不要沉啊
2015-09-06 18:32
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
自顶!
2015-09-06 18:34
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
大神救救我
2015-09-06 18:36
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
恩 要全部的吗?
2015-09-06 18:36
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
单独调用save没问题
2015-09-06 18:37
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
就是从函数调用完全没效果
2015-09-06 18:37
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>

const int MAX_NAME = 128;
const int NAME = 32;
const int LEVEL = 16;

typedef struct teacher  //教师类型结构体
{
    int  num;
    char name[128];
    char  level[16];
    char sex[10];
    int age;
    double score;
} TEACHER;




/*输入教师信息函数 */
void input(TEACHER *data, int *len)
{
    int num;
    void save(TEACHER *data, int len);
   
    putchar('\n');
    printf("%s\n", "请输入新的记录,如果需要退出当前菜单请输入-1.");
    printf("%s\n", "格式:\n职工号\n");
    printf("%s\n", "姓名 职称 性别 年龄 教学效果综合评分");
    putchar('\n');
    printf("如:\n");
    printf("1\n");
    printf("李白 副教授 男 25 92\n");
    scanf("%d", &num);
   
    while(num != -1)
    {
        data[*len].num = num;
        scanf("%s %s %s %d %lf", data[*len].name, &data[*len].level, &data[*len].sex, &data[*len].age, &data[*len].score);
        (*len)++;
        scanf("%d", &num);
    }
   
    void save(TEACHER *data,int len);
}

/*输出教师信息函数*/
void output(TEACHER *data, int len)
{
    int i;  
   
    system("cls");
    printf("%10s", "职工号");
    printf("%10s", "姓名");
    printf("%10s", "职称");
    printf("%10s", "性别");
    printf("%10s", "年龄");
    printf("%12s", "教学效果综合评分");
    putchar('\n');
   
    for (i =0; i < 80; i++)
        putchar('=');
   
    putchar('\n');
   
    for (i = 0; i< len; i++)
    {
        printf("%10d", data[i].num);
        printf("%10s", data[i].name);
        printf("%10s", data[i].level);
        printf("%10s", data[i].sex);
        printf("%10d", data[i].age);
        printf("%12lf", data[i].score);
        putchar('\n');
    }

    for (i =0; i < 80; i++)
        putchar('=');

    putchar('\n');
    printf("按回车键继续.");
    getchar();
    getchar();
}

/*排序函数*/
void sort(TEACHER *data, int len)
{
    int i,j,k;
    TEACHER temp;
    for (i=0; i<len-1; i++)
      {
        for (j=i+1; j<len; j++)
          if (data[i].score > data[j].score)
          {
                temp = data[i];
                data[i] = data[k];
                data[k] = temp;
        }
    }
}

/*搜索函数*/
void find(TEACHER *data, int len)
{
    int find_num, result ;
    int i;
    lab: result=0;
        printf("%s\n", "请选择输入需要查找的老师的职工号或姓名,退出当前菜单请输入 -1.");
        scanf("%d", &find_num);
        
        if (find_num == -1)
            return;     
        
        while( data[result].num != find_num && result < len)
            result ++;
        
        if (result >= len )
        {
            printf("%s\n", "未查询到相关信息");
            goto lab;
        }
        else
        {
            system("cls");
            printf("%s\n", "查询信息如下:");
            
            for (i =0; i < 80; i++)
                putchar('=');
            
            putchar('\n');
            
            printf("%10s", "职工号");
            printf("%10s", "姓名");
            printf("%10s", "职称");
            printf("%10s", "性别");
            printf("%10s", "年龄");
            printf("%12s", "教学效果综合评分");
            putchar('\n');
            
            printf("%10d", data[result].num);
            printf("%10s", data[result].name);
            printf("%10s", data[result].level);
            printf("%10s", data[result].sex);
            printf("%10d", data[result].age);
            printf("%12.1lf", data[result].score);
            putchar('\n');
 
            for (i =0; i < 80; i++)
                 putchar('=');
            
            putchar('\n');
            goto lab;
        }
}

/*显示信息函数*/
void paint()
{
    int i;
    system("cls");
    printf("%55s\n", "北方工业大学学生成绩管理系统\n");
    printf("           制作者:    何闻达            \n");

    for (i = 0; i < 80; i++)
        putchar('=');

    putchar('\n');
    putchar('\n');
    putchar('\n');
    printf("             1 输入信息                                  2 输出信息\n");
    printf("             3 按教学效果综合评分排序                     4 按学号查找\n");
   
    printf("             0 退出\n");
    putchar('\n');
    putchar('\n');
    putchar('\n');


    for (i = 0; i<= 79; i++)
        putchar('=');

    putchar('\n');
    putchar('\n');
    printf("%s\n", "请输入各操作对应的序号:");
}

/*保存文件函数*/
void save(TEACHER *data, int len)
{
    int i;
    FILE *fp;
   
    fp=fopen("d:\\教师信息统计.txt","w");
    fprintf(fp,"%10s", "职工号");
    fprintf(fp,"%10s", "职称");
    fprintf(fp,"%10s", "姓名");
    fprintf(fp,"%10s", "性别");
    fprintf(fp,"%10s", "年龄");
    fprintf(fp,"%12s", "教学效果综合评分");
    fprintf(fp,"========================================================================\n");
    putchar('\n');
   
    for (i = 0; i< len; i++)
    {
        fprintf(fp,"%10d", data[i].num);
        fprintf(fp,"%10s", data[i].name);
        fprintf(fp,"%10s", data[i].level);
        fprintf(fp,"%10s", data[i].sex);
        fprintf(fp,"%10d", data[i].age);
        fprintf(fp,"%12lf", data[i].score);

    }
   
    fprintf(fp,"========================================================================\n");
    fclose(fp);
    printf("文件已保存到\"成绩统计表.txt\"");
    getchar();
    getchar();
}
/*主函数*/
int main()
{
    TEACHER data[NAME];
    int len = 0;
    char ctrl_ch;
    paint();
    scanf("%c", &ctrl_ch);
    while (ctrl_ch != '0')
    {
        switch(ctrl_ch)
        {
     
            ;
              case '1':
                    input(data, &len);
                    break;
              case '2':
                    output(data, len);
                    break;
              case '3':
                    sort(data, len);
                    break;
              case '4':
                    find(data, len);
                    break;
              case '5':
                      save(data, len);
                      break;
              default:
                    if (ctrl_ch != '\n') printf("%s\n", "输入错误!");
                    break;
        }
        
    if (ctrl_ch != '\n')
        paint();
   
    scanf("%c", &ctrl_ch);
    }
    return 0;
}
2015-09-06 18:38
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
回复 9楼 TonyDeng
好像是啊。。。
2015-09-06 18:39
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
实践中。。。
2015-09-06 18:40
快速回复:求助帖 关于函数调用函数的问题
数据加载中...
 
   



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

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