首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

随机文件String的读取请问

2012-02-29 
随机文件String的读取请教#pragmaresource*.dfm structstrname//定义结构{Stringname}strnamestrword

随机文件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); 写的时候就没法这样了。

热点排行