|
텍스트파일로 읽고 쓰기시 문자열로 123 345 678 이 한레코드로 100개의 레코드를
기록한후 70번째 것만 FSEEK로 이동하여 수정하고 싶습니다
아래의 루틴입니다
그런데 70번째의 내용을 쓰면 0~69까지가 지워져 버립니다
왜그런지 아시는분은 답장 좀 부탁드립니다
void __fastcall TForm1::FormCreate(TObject *Sender)
{
struct tag{
int aa1;
int aa2;
int aa3;
};
struct tag input[100]; /* 파일을 읽어들여 놓을 구조체 */
a1=a2=a3=0;
fPtr=fopen("c:\\lo.txt","r");
if (fPtr==NULL)
{
Edit1->Text="file not found";
return;
}
fscanf(fPtr,"%d %d %d",&input[i].aa1,&input[i].aa2,&input[i].aa3);
str1.sprintf("xx %d %d %d",input[i].aa1,input[i].aa2,input[i].aa3);
Memo1->Lines->Add(str1);
// str=str+str1;
fseek(fPtr, 12*1, SEEK_SET);
fscanf(fPtr,"%d %d %d",&input[i].aa1,&input[i].aa2,&input[i].aa3);
str1.sprintf("xx %d %d %d",input[i].aa1,input[i].aa2,input[i].aa3);
Memo1->Lines->Add(str1);
fseek(fPtr, 12*2, SEEK_SET);
fscanf(fPtr,"%d %d %d",&input[i].aa1,&input[i].aa2,&input[i].aa3);
str1.sprintf("xx %d %d %d",input[i].aa1,input[i].aa2,input[i].aa3);
Memo1->Lines->Add(str1);
fclose(fPtr);
Edit1->Text=str;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
fPtr=fopen("c:\\lo.txt","w");
if (fPtr==NULL)
{
Edit1->Text="file not found";
return;
}
a1=a2=3;
a3=5;
fseek(fPtr, 12*2, 2);
fprintf(fPtr,"%d %d %d",a1,a2,a3);
fclose(fPtr);
}
//---------------------------------------------------------------------------
|