C中对与一个固定的数据结构存储很方便。
structUSERINFO{intID;char USERNAME[10];char PASSWORD[15];char MAIL[10];}typedefUSERINFO;USERINFOUserInfo;ZeroMemory(&UserInfo,sizeof(UserInfo));UserInfo.ID= 1;strcat(UserInfo.USERNAME,"wan_dou");strcat(UserInfo.PASSWORD,"password");strcat(UserInfo.MAIL,"wan_dou@citiz.net");FILE *fp=fopen("c:/x.txt","w");fwrite(&UserInfo,sizeof(UserInfo),1,fp);fclose(fp);就将保存一个用户的信息。如果一个变量或数组的输入低于给他的输入就自动补空,所以取出更方便fread(&UserInfo,sizeof(UserInfo),1,fp);但PHP中好象没有STRUCT的支持,而CLASS用相同的操作的话一定是错误的。
所以只有自己来模拟一个结构了。
下面就是一个不太成熟的结构了,最讨厌的就是不能支持变动长度的数据。
define("UserInfoPath","data/UserInfo");class USERINFO{var$UserInfoStruct= Array("UserName" => 10 ,//定义结构"PassWord" => 15 ,//如果是int,float,double可以参考数据库中的定义或自行设定"Mail" => 50 ,//50:字符需要的长度,MAIL是结构名称);var$UserName;//真正存放内容的变量在这里。
var$PassWord;//var$Mail;//,必须和结构定义的描述相同。
functioncheckValue($str,$n)//给定一个变量,和规定变量长度变量{while(strlen($str)少补{$str.='';}if(strlen($str) > $n)//多退$str=substr($str,0,$n);}functionSaveToFile($filename)//保存为一个文件{$fp=fopen($filename,"w");//打开for(reset($this->UserInfoStruct);$i=key($this->UserInfoStruct);next($this->UserInfoStruct)){$this->checkValue(&$this->$i,$this->UserInfoStruct[$i]);//调用函数,被检查变量提供指针地址echo $this->$i;//我自己放的调试,可删除。fputs($fp,$this->$i,$this->UserInfoStruct[$i]);//写入$this->$i是一个指相变量的变量,如$this->UserName,第三个参数可省,但如果加更可靠的保存指定长度的变量。;}fclose($fp);//关闭}functionLoadFromFile($filename)//从一个文件中读取{$fp=fopen($filename,"r");//打开for(reset($this->UserInfoStruct);$i=key($this->UserInfoStruct);next($this->UserInfoStruct)){$this->$i=fgets($fp,$this->UserInfoStruct[$i]);//读出指定长度的字符到变量echo $this->$i;//自己调试}fclose($fp);//关闭}};/*$UserInfo= new USERINFO;//写$UserInfo->UserName="wan_dou";$UserInfo->PassWord="1981627";$UserInfo-> Mail ="wan_dou@sina.com.cn";$UserInfo->SaveToFile("c:/1.txt");$UserInfoLoad= new USERINFO;//读$UserInfoLoad->LoadFromFile("c:/1.txt");echo$UserInfoLoad->UserName;*/?>
