读取发生冲突 请问要怎么解决

图片说明
#include
#include
using namespace std;
int main()
{
ofstream worker;
worker.open("g:\编程\worker.dat",ios::out|ios::binary);
int i;
cout<<'?'< cin>>i;
while(i)
{
char name[30],telephone[30],mail[30],stdress[30];
int code,i;
if(!worker)
{
cout<<"error"< abort();
}
cout cin>>name;
worker.write((char*)&name,sizeof(int));
cout<<"code"< cin>>code;
worker.write((char*)code,sizeof(int));
cout<<"telephone"< cin>>telephone;
worker.write((char*)&telephone,sizeof(int));
cout<<"mail"< cin>>mail;
cout<<"stdress"< cin>>stdress;
worker.write((char*)&stdress,sizeof(int));
cout.flush();

cout<<'?'<<endl;
cin>>i;
}

worker.close();
getchar();
return 0;

}

 int main()
{
    ofstream worker;
    worker.open("worker.dat",ios::out|ios::binary);
    int i = 0;
    cout<<'?';
    cin>>i;
    while(i > 0)
    {
        char name[30],telephone[30],mail[30],stdress[30],czTemp[20];
        int code;
        if(!worker)
        {
            cout<<"error"; abort();
        }
        cin>>name;
        worker.write((char*)&name,strlen(name));
        cout<<"code"; cin>>code;
        itoa(code,czTemp,10);
        worker.write(czTemp,strlen(czTemp));
        cout<<"telephone"; cin>>telephone;
        worker.write((char*)&telephone,strlen(telephone));
        cout<<"mail"; cin>>mail;
        cout<<"stdress"; cin>>stdress;
        worker.write((char*)&stdress,strlen(stdress));
        cout.flush();
        cout<<'?'<<endl;
        i --;
    }

    worker.close();
    getchar();
    return 0;
}

看上去是你的指针没有分配,调试方式运行程序,而不是直接运行,看汇编没用