#c函数不接受参数,文件的输入输出


#include
#include
#include
using namespace std;
void LoginMenu(char moudle);
void userLogin();
void input(char &stu,char &province,char &city,char ®ion,char &street);
void check();
void Uall();
void managerLogin(char moudle);
void Mdelete();
void redact();
void UserLogin();
char address[100];
    char province[100];
    char region[100];
    char city[100];
    char street[100];
int main(void)
{
    char choice;       //打开登陆菜单
    cout << "\t\t|----------系统登录------------|\n";
    cout << "\t\t|0.退出                        |\n";
    cout << "\t\t|1.登录                        |\n";
    cout << "\t\t|2.管理员登录                  |\n";
    cout << "\t\t|------------------------------|\n";
    cout << "请输入模块编号(0-2):";
    cin >> choice;            //输入选择功能的编号
    if (choice == '0')        //如果输入编号为0,则退出程序
    {
        return 0;
    }
    else
    {
        LoginMenu(choice);    //调用登录菜单执行函数
        return 0;
    }
}
    ///**********************************************
    ///函数名:LoginMenu                            *
    /// 输入参数:                                  *
    /// moudle:模块编号                            *
    /// 返回值                                      *
    /// 无                                          *
    /// 函数功能:                                  *
    ///    根据模块编号调动相关函数                 *
    ///**********************************************
    void LoginMenu(char moudle)
    {
        switch (moudle)
        {
        case '0':
                return;
                break;
        case '1':
                break;
        case'2':
                managerLogin();
                break;
        }
    }
    void userLogin(char moudle)
    {
        char choice2;       //打开用户登陆菜单
        cout << "\t\t|----------欢迎您!------------|\n";
        cout << "\t\t|0.退出                        |\n";
        cout << "\t\t|1.查询                        |\n";
        cout << "\t\t|2.录入(帮助我们完善这份地图)|\n";
        cout << "\t\t|------------------------------|\n";
        cout << "请输入模块编号(0-2):";
        cin >> choice2;            //输入选择功能的编号
        if (choice2 == '0')        //如果输入编号为0,则退出程序
        {
            return;
        }
        else
        {
            UserLogin(choice2);    //调用登录菜单执行函数
            return;
        }
    }
    ///**********************************************
    ///函数名:userLogin                            *
    /// 输入参数:                                  *
    /// moudle:模块编号                            *
    /// 返回值                                      *
    /// 无                                          *
    /// 函数功能:                                  *
    ///    根据模块编号调动相关函数                 *
    ///**********************************************
    void UserLogin(char moudle)
    {
        switch (moudle)
        {
        case '0':
            return;
            break;
        case '1':
            check();
            break;
        case'2':
            input();
            break;
        }
    }
    void input()
    {
        int i, m = 0;
        char ch[2];
        FILE* fp;              //声明fp是FILE型指针,用于指向FILE类型
        if ((fp = fopen("data", "ab+")) == NULL)     //打开名为data的二进制文件,可以读,但只允许在文件末尾追写
        {
            cout << "无法打开" << endl;
            return;
        }
        while (!feof(fp))  //文件尚未结束继续循环
        {
            if (fread(&address,sizeof(char), 1, fp) == 1)
        //size_t fread(void*buffer,size_t size,size_t count, FILE*stream)
        //void *buffer:将文件中的二进制数据读取到该缓冲区中
        //size_t size:读取的基本单元的字节大小
        //size_t count:读取的基本单元个数
        //FILE*stream:文件指针    
                m++;      //统计当前记录条数
        }
        fclose(fp);
        if (m == 0)
            cout << "此地暂无记录" << endl;
        else
        {
            system("cls");
            Uall();    //调用Uall函数,显示已近储存在库里的全部信息,即总览
        }
        if ((fp = fopen("data", "wb")) == NULL)   //二进制文本写入
        {
            cout << "无法打开" << endl;
            return;
        }
            printf("请按序输入每一部分的内容:");
        while (strcmp(ch, "是"))   //判断是否要录入新信息
        {
            for(i=0;iprintf("省");
            scanf("%s", &province);
            printf("市");
            scanf("%s", &city);
            printf("区");
            scanf("%s", ®ion);
            printf("街道");
            scanf("%s", &street);
            if (fwrite(&address, sizeof(char), 1, fp) == 1)
            {
                printf("%s 感谢支持!信息上传成功!");
            }
            printf("是否继续上传?(是或否)");
            scanf("%s", ch);
        }
        fclose(fp);
        printf("OK!");
    }
    void managerLogin()
    {
        cout << "管理员登录" << endl;
    }



![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/499783398176149.png "#left")


`问题:函数不接受一个参数/0个参数;总之就是除了menu以外的函数都不接受参数。

fwrite(&address, sizeof(char), 1, fp) 读写里的sizeof(char)不对,这里是address的大小。