|
화일을 바이너리로 쓰건 텍스트로 쓰건 내용에는 별 차이가 없습니다.
바이너리와 텍스트의 차이는 특수한 문자들 예를 들면 \n이라든가 ^z과같은 특수한문자를 읽거나 쓸때
차이가 납니다.
\n을 바이너리로 쓰게되면 0x0A만이 들어가지만(0x0D인가? 헷갈려서..) 텍스트로 쓰는 경우에는 0x0A와 0X0D가 모두 들어갑니다.
화일을 읽을때 텍스트화일로 읽어들이면 ^Z 도 EOF로 인식하게됩니다..
또 텍스트화일로 읽어들이는 경우에는 0x0A와 0x0D를 만나면 줄이 바뀌지만 바이너리로 읽어들이면 줄이
바뀌지 않는것을 볼수 있습니다.
말주변이 없어서 횡설수설 떠들었습니다만 하여간 일반적인 문자를 쓰게되면 바이너리건 텍스트건 상관없이 똑같이 들어간다는 말입니다.
소스를 보니 문자열을 바이너리 형식으로 저장을 하실려구 하신것같은데..
에디터같은 걸루 보면 마구마구 깨져서 보이게 하시고 싶으신거죠?
그럼 그냥 정수형으로 저장하시면 될겁니다.
제대로 되는지는 모르겠지만 다음과 같이 하면 되지않을까요?
물론 패스워드가 숫자인경우만 되겠죠..^^
void __fastcall TForm1::Button1Click(TObject *Sender)
{
FILE *fp;
union P {
char password[2];
int ipass;
}Pwd;
//char a[10] = "abcde";
if((fp = fopen("C:\\password.dat","rb")) != NULL) {
fread(Pwd.password,sizeof(Pwd.password), 1, fp);
Edit1->Text = IntToStr(Pwd.ipass);
}
else {
ShowMessage("init file");
Pwd.ipass = 12345;
FILE *fp;
fp = fopen("C:\\password.dat","wb");
fwrite(Pwd.password, sizeof(Pwd.password), 1, fp);
fclose(fp);
}
fclose(fp);
}
fbpsok 님이 쓰신 글 :
: 패스워드를 바이너리 로 저장했는데 파일을 열어보면 저장한 패스워드가
: 보이는데 왜 그렇죠...
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: FILE *fp;
: char password[10];
: //char a[10] = "abcde";
:
: if((fp = fopen("C:\\data\\pass\\password.dat","rb")) != NULL) {
: fread(password,sizeof(password), 1, fp);
: Edit1->Text = password;
: }
: else {
: ShowMessage("init file");
: strcpy(password,"12345");
: FILE *fp;
: fp = fopen("C:\\data\\pass\\password.dat","wb");
: fwrite(password, sizeof(password), 1, fp);
: fclose(fp);
: }
: fclose(fp);
: }
:
|