| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1153 人关注过本帖
标题:这样调用函数正确么?
只看楼主 加入收藏
maiiho
Rank: 1
等 级:新手上路
帖 子:94
专家分:7
注 册:2008-7-17
收藏
得分:0 
哎,大家一看这么长,立刻就沉默了..
下次发帖应该注意点,把代码分段拿出
2008-09-09 11:13
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
收藏
得分:0 
[bo][un]maiiho[/un] 在 2008-9-9 11:03 的发言:[/bo]

那我要返回到主函数的时候,应该怎么做?
return main();???

看来您还不太理解return的用法。return后面跟的并不是返回的函数名,而是返回值。
2008-09-09 12:25
maiiho
Rank: 1
等 级:新手上路
帖 子:94
专家分:7
注 册:2008-7-17
收藏
得分:0 
对!
return 表达式
那怎么返回到mian函数?不能用main,不能直接写main
那怎么返回啊???
2008-09-09 12:38
loveJE
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-9-8
收藏
得分:0 
直接return就可以了
你把main()都改为return;就行
写成调用main()也能编译通过,但是肯定死循环!!
2008-09-09 19:53
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
没有返回到主函数

嵌套调用

—>〉Sun〈<—
2008-09-09 21:32
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
在C里主函数还是可以被调用的~甚至递归调用。
想从别的函数跳转的main可以使用一个标准库函数setjmp()函数与longjmp()函数
实现长转跳。

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-09-09 23:45
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
帮你格式化一下~~~

程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
struct xx
{
    char xingming[15];
    char xingbie[5];
    char dianhua[13];
    char qq[13];
    char email[30];
};

int printf1()                              /*菜单函数*/
{
    int i;
    system("cls");
    printf("\t\t\t\t  通讯录\n");
    printf("--------------------------------------------------------------------------------");
    printf("1.浏览    ");
    printf("2.添加    ");
    printf("3.修改    ");
    printf("4.查找    ");
    printf("5.删除    ");
    printf("6.退出");
    printf("\n--------------------------------------------------------------------------------");
    printf("我要选择:");
    scanf("%d", &i);
    return i;
}
tj()                                       /*添加函数*/
{
    int a;
    struct xx XX;
    FILE *fp;
    if ((fp = fopen("xinxi.txt", "ab")) == NULL)
    {
        printf("错误!不能打开记录文件(xinxi.txt)!\n");
        getch();
        main();
    }
    system("cls");
    getchar();   /*用来接收'\n'*/
    printf("输入姓名:");
    gets(XX.xingming);
    printf("输入性别:");
    gets(XX.xingbie);
    printf("输入电话:");
    gets(XX.dianhua);
    printf("输入QQ:");
    gets(XX.qq);
    printf("输入E-mail:");
    gets(XX.email);
    fwrite(&XX, sizeof(XX), 1, fp);
    fclose(fp);
    printf("\n1.返回--2.继续--3.退出-->[ ]\b\b");
    scanf("%d", &a);

    if (a == 1)
    {
        return main();
    }
    else if (a == 2)
    {
        return tj();
    }
    else if (a == 3)
    {
        exit(0);
    }
    else
    {
        printf("错误,请按套路来!\n");
        getch();
        return main();
    }
}
xs()                                 /*显示函数*/
{
    FILE *fp;
    int i;
    struct xx XX;
    if ((fp = fopen("xinxi.txt", "rb")) == NULL)
    {
        printf("错误!不能打开记录文件(xinxi.txt)!");
        getch();
        main();
    }
    while (fread(&XX, sizeof(XX), 1, fp) == 1)
    {
        printf("姓名: %s\n", XX.xingming);
        printf("性别: %s\n", XX.xingbie);
        printf("电话: %s\n", XX.dianhua);
        printf("QQ  : %s\n", XX.qq);
        printf("E-m : %s\n\n", XX.email);
    }
    fclose(fp);
    printf("(1.返回||2.退出)-->[ ]\b\b");
    scanf("%d", &i);
    if (i == 1)
    {
        system("cls");
        return main();
    }
    else if (i == 2)
    {
        exit(1);
    }
    else
        printf("错误,请按套路来!");
    getch();
    system("cls");
    xs();
}
cx()                               /*查询函数*/
{
    struct xx XX;
    FILE *fp;
    int flag;
    int total;
    char ch[20];
    int b;
    int a;

    if ((fp = fopen("xinxi.txt", "rb")) == NULL)
    {
        printf("错误!不能打开记录文件(xinxi.txt)!");
        getch();
        main();
    }

    rewind(fp);                 //使指针返回文件首端
    system("cls");
    printf("( 1.按姓名查询 || 2.按电话查询 || 3.返回 )---->[ ]\b\b");
    scanf("%d", &flag);
    getchar();                  //接受%d

    if (flag == 1)
    {
        printf("输入姓名查询:");
        gets(ch);
        total = 0;
        while (fread(&XX, sizeof(XX), 1, fp) == 1)
            if (strcmp(ch, XX.xingming) == 0)
            {
                total++;
                if (total == 1)
                {
                    printf("\n姓名:%s", XX.xingming);
                    printf("姓别:%s\n", XX.xingbie);
                    printf("电话:%s\n", XX.dianhua);
                    printf("QQ  :%s\n", XX.qq);
                    printf("E-M :%s\n\n", XX.email);
                }
                else
                {
                    system("cls");
                    printf("找不到!重新查找吗?----->1.好    2.不   3.退出\n选择:");
                    scanf("%d", &a);
                    if (a == 1)
                        system("cls");
                    cx();
                    if (a == 2)
                        system("cls");
                    main();
                    if (a == 3)
                        return main();
                }
            }
        printf("1.继续||2.返回||3.退出-->[ ]\b\b");
        scanf("%d", &b);
        if (b == 1)
        {
            cx();
        }
        else if (b == 2)
        {
            system("cls");
            return main();
        }
        else
        {
            exit(1);
        }
        while (b < 0 || b > 3)
        {
            printf("请正确输入!");
            getch();
            cx();
        }
    }
    if (flag == 2)
    {
        printf("输入电话查询:");
        gets(ch);
        total = 0;
        while (fread(&XX, sizeof(XX), 1, fp) == 1)
            if (strcmp(ch, XX.dianhua) == 0)
            {
                total++;
                if (total == 1)
                {
                    printf("\n姓名:%s\n", XX.xingming);
                    printf("姓别:%s\n", XX.xingbie);
                    printf("电话:%s\n", XX.dianhua);
                    printf("QQ  :%s\n", XX.qq);
                    printf("E-M :%s\n\n", XX.email);
                }
            }

            else
            {
                printf("\n请正确选择!\n\n");
                getch();
                cx();
            }
        fclose(fp);
    }
}


xg()                                 /*修改函数*/
{
    struct xx XX;
    FILE *fp1, *fp2;
    int flag;
    char ch[15];
    int a;
    if ((fp1 = fopen("xinxi.txt", "rb")) == NULL)
    {
        printf("错误!不能打开记录文件(xinxi.txt)!");
        getch();
        main();
    }
    if ((fp2 = fopen("temp.txt", "wb")) == NULL)
    {
        printf("错误!不能打开记录文件(temp.txt)!");
        getch();
        main();
    }
    printf("要修改谁(输入名字):");
    gets(ch);
    getchar();
    flag = 0;
    while (fread(&XX, sizeof(XX), 1, fp1) == 1)
    {
        if (strcmp(ch, XX.xingming) == 0)
        {
            printf("\n姓名:%s\n", XX.xingming);
            printf("性别 :%s\n", XX.xingbie);
            printf("电话 :%s\n", XX.dianhua);
            printf("QQ :%s\n", XX.qq);
            printf("E-M :%s", XX.email);
            printf("\n\n\n按任意键,输入新记录!\n");
            getch();
            printf("姓名:");
            gets(XX.xingming);
            printf("性别:");
            gets(XX.xingbie);
            printf("电话:");
            gets(XX.dianhua);
            printf("QQ:");
            gets(XX.qq);
            printf("E-mail:");
            gets(XX.email);
            flag = 1;
        }
        fwrite(&XX, sizeof(XX), 1, fp2);
    }
    fclose(fp1);
    fclose(fp2);
    if (flag == 1)
    {
        printf("Modify sucess!\n");
        remove("xinxi.txt");
        rename("temp.txt", "xinxi.txt");
    }
    else
        printf("找不到这个记录!\n");
    getch();
    printf("1.继续||2.返回||3.退出-->[ ]\b\b");
    scanf("%d", &a);
    if (a == 1)
    {
        system("cls");
        xg();
    }
    else if (a == 2)
    {
        main();
    }
    else if (a == 3)
    {
        exit(0);
    }
}

main()
{
    switch (printf1())
    {
    case 1:
        system("cls");
        xs();
        break;
    case 2:
        system("cls");
        tj();
        break;
    case 3:
        system("cls");
        xg();
        break;
    case 4:
        system("cls");
        cx();
        break;
    case 5:
        printf("Deng Dai!");
        getch();
        main();
        break;
    case 6:
        exit(0);
        break;
    default:
        printf("\n\t\t错误!请输入1~6!\n\t\t按任意键重新输入!");
        getch();
        system("cls");
        main();
        break;
    }
}


专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-10 01:24
快速回复:这样调用函数正确么?
数据加载中...
 
   



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

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