C中对与一个固定的数据结构存储很方便。 struct USERINFO { int ID; char USERNAME[10]; char PASSWORD[15]; char MAIL[10]; }typedef USERINFO; USERINFO UserInfo; 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;//,必须和结构定义的描述相同。 function checkValue($str,$n)//给定一个变量,和规定变量长度变量 { while(strlen($str)<$n)//少补 { $str.=' '; } if( strlen($str) > $n)//多退 $str = substr($str,0,$n); } function SaveToFile($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);//关闭 } function LoadFromFile($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; */ ?> |