|
AnsiString 은 클래스이므로 ...구조체의 멤버로 사용하면 클래스의 포인터만 멤버에 지정이 됩니다.
따라서 구조체의 크기 즉 sizeof(myname) 을 하면 AnsiString 클래스의 포인터 3개와 나이를 나타내는 int 하나니까...32비트 OS에서는 16바이트로 나오게 됩니다.
char 배열을 사용하던가 AnsiString 을 꼭 사용하시려면 문장을 저장하기 위한 다른 방법을 강구해야 할 것입니다.
초초초초초초보 님이 쓰신 글 :
: 제가 하고싶은것은 저장 버튼 눌렀을때 파일에 저장(wb)이 되고 view 버튼을 눌렀을때 읽어(rb) 올려고 하고 있습니다.
: 어디가 잘못된것인지 에러가 뜨내요,,
: FILE*fp 여기에서 문제가 발생 되는건 알겟는데,,, 어디가 잘못된것인지 잘 모르겟내요..
: 문법도 틀린것 같지는 안습니다....
: 아시는분이 계시다면 잘못된점좀 지적해주시기 바람니다. ㅠ
: 자주 질문을 올린듯....
: 아직 view버튼은 만들지 않았습니다.
:
:
:
: 헤더파일에 선언한 구조체..
: AnsiString Memotogether,Memosingle;
: typedef struct{
: AnsiString lasname;
: AnsiString firname;
: AnsiString woname;
: int age;
: }myname;
: myname start
:
:
: cpp파일 내용...
:
:
:
: void __fastcall TForm1::ButtonClick(TObject *Sender)
: {
:
:
: start.lasname = Txtlastname->Text;
: start.firname = Txtfirstname->Text;
: start.age = Txtage->Text.ToInt();
: start.woname = Txtwomenname->Text;
:
:
: Memotogether = "나는 " + Txtlastname->Text + Txtfirstname->Text + "이고,\n나이는 " + Txtage->Text + "세이며,\n여자친구이름은 " + Txtwomenname->Text + "입니다.";
: Memosingle = "나는 " + Txtlastname->Text + Txtfirstname->Text + "이고,\n나이는 " + Txtage->Text + "세이며,\n여자친구는 없습니다.";
:
: if(Txtlastname->Text.Trim().IsEmpty()) ShowMessage("성을 입력해주세요.");
: else if(Txtfirstname->Text.Trim().IsEmpty()) ShowMessage("이름을 입력해주세요.");
: else if(Txtage->Text.Trim().IsEmpty()) ShowMessage("나이를 입력해주세요.");
: else if(Womenselect->Checked){
: if(Txtwomenname->Text.Trim().IsEmpty()) ShowMessage("여자친구이름을 입력해주세요.");
: else{
: FILE *fp = fopen("Introduce.dat","wb");
: fputs(&start, sizeof(start),1,fp);
: fclose(fp);
: ShowMessage(Memotogether);
: }
: } else{
: FILE *fp = fopen("Introduce.dat","wb");
: fputs(Memosingle, sizeof(Memosingle),1,fp);
: fclose(fp);
: ShowMessage(Memosingle);
: }
:
: }
|