鱼C论坛

 找回密码
 立即注册
查看: 2715|回复: 0

C++结构体录入文件还有while死循环解决方法

[复制链接]
发表于 2012-3-17 20:32:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>
#include <fstream>

void type ();
void input ();

using namespace std;

struct frd
{
        char name[10];
        char sex;
        char tel[13];
};

int main()
{
        int ch;
        int a = 1;
        do
        {
                cout << "欢迎使用通讯录系统~" << endl;
                cout << "请选择你想要的操作:" << endl;
               
                cout << "按1:打印通讯录" << endl;
                cout << "按2:录入联系人到通讯录" << endl;
                cout << "按3:退出通讯录" << endl;
               
               
               
                cin >> ch;
               
                switch (ch)
                {
                case 1 :
                        type ();

                        break;
                case 2 :
                        input ();
                        cin.ignore(100, '\n');
                        cout << "按任意键继续~";
                        cin.get();
                        break;
                case 3 :
                        cout << "已经成功退出O(∩_∩)O哈哈~" << endl;
                        a = 0;
                        return 0;
                default :
                        cout << "输入错误!";

                        return 0;
                }

        } while (a);
        return 0;
}


void type ()
{
        fstream in ( "fileFrd.txt" , ios::in );
       
        if ( !in )
        {
                cerr << "打开文件失败!" << endl;

        }
        char ch;
        while ( in >> ch )
        {
                cout << ch ;
        }
        cout << endl;
        in.close();
        cout << "已经成功打印出来O(∩_∩)O哈哈~" << endl;
}

void input ()
{
        struct frd frd1;
        fstream out ( "fileFrd.txt" , ios::out );
       
        if ( !out )
        {
                cerr << "打开文件失败!" << endl;
               
        }
       
        cout << "请输入名字:";
        cin >> frd1.name;
        cout << endl;
       
        int a = 1;
        do
        {
                cout << "请输入性别:";
                cin >> frd1.sex;
                switch (frd1.sex)
                {
                case 'M' :
                case 'm' :
                        a = 0;

                        break;
                case 'F' :
                case 'f' :
                        a = 0;

                        break;
                default:
                        cout << "请输入M F或者m f" << endl;       
                        cin.ignore(100, '\n');
                        cin.get();
                        break;
                }
        }while (!(frd1.sex == 'M' || frd1.sex == 'm' || frd1.sex == 'F' || frd1.sex == 'f' ));

        cout << endl;
        cout << "请输入手机号码:";
        cin >> frd1.tel;
        cout << endl;
       
        struct frd *p;
        p = &frd1;

        out.write((char *)&p,sizeof(frd));


        cout << "成功录入O(∩_∩)O哈哈~" << endl;
        cout << "\n\n";
        out.close();
}



程序没写完,希望有好心的大哥帮解决下。乱输入很容易就进入死循环了,不知道怎么解决,还有void input()函数中,怎么把结构体录入到文件中,本人菜鸟很无奈啊~~~
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-12 04:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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