随机文件String的读取请教
#pragma resource "*.dfm "
struct strname //定义结构
{
String name;
};
strname strword;
int total;
FILE *file1;
TStrForm *StrForm;
//---------------------------------------
__fastcall TStrForm::TStrForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------
void __fastcall TStrForm::FormCreate(TObject *Sender)
{
file1=fopen( ".\\string.txt ", "a+b ");
total=filelength(fileno(file1))/sizeof(strword)+1;
}
//---------------------------------------
void __fastcall TStrForm::Button1Click(TObject *Sender)
{
strword.name=Edit1-> Text; //写入
fseek(file1,sizeof(strword)*(total-1),SEEK_SET);
fwrite(&strword,sizeof(strword),1,file1);
}
//---------------------------------------
void __fastcall TStrForm::Button2Click(TObject *Sender)
{
fseek(file1,sizeof(strword)*(total-1),SEEK_SET); //读取
fread(&strword,sizeof(strword),1,file1);
Edit1-> Text=strword.name;
}
//---------------------------------------
void __fastcall TStrForm::FormClose(TObject *Sender, TCloseAction &Action)
{
fclose(file1);
}
为什么这段代码读不出来数据Edit1-> Text显示是空白。但是手动打开String.txt里面是有内容的,如果把String name;换成char name[20];这样是好用。但是为什么不可以用String呢。请各位前辈指点
[解决办法]
要想定义其他结构体,应该这样:
typedef aaa //加不加都可以,名称随意
{
String name;
}strname;
我尝试用你的strword做缓冲区,但读的时候可以fwrite(strword.name.c_str(),strlen(strword.name.c_str()),1,file1); 写的时候就没法这样了。