问题是这样的,这个是用来计数的,但是fopen选择用a+的方式打开以后,如果不加注释的那一行代码,直接fwrite写入的话,新的$num数据总是写在原有数据的结尾处。所以就是想问一下,fgets这个函数是不是在读取完数据后,指针也会指到读取数据的结尾处呢?
然后再想问一下,如果加上注释掉的那一行代码之后,就有两次fopen了,那么前面的那一次不用fclose吗?
$file="record.txt";
...
$fp=fopen($file,"a+");
$num=fgets($fp,"1024");
$num=$num+1;
//$fp=fopen($file,"w+");//之所以注释掉这一行是因为加入这一行代码之后,写入的数据就是正确的了。
fwrite($fp,$num);
fclose($fp);
然后再想问一下,如果加上注释掉的那一行代码之后,就有两次fopen了,那么前面的那一次不用fclose吗?
$file="record.txt";
...
$fp=fopen($file,"a+");
$num=fgets($fp,"1024");
$num=$num+1;
//$fp=fopen($file,"w+");//之所以注释掉这一行是因为加入这一行代码之后,写入的数据就是正确的了。
fwrite($fp,$num);
fclose($fp);
w 方式是写方式,总是先清空原有的内容一般可不要 fclose($fp);
除非你想早一点把控制权还给操作系统
...
$fp=fopen($file,"r+");//文件存在的情况下r+,配合下面的rewind,可以抹掉前面写入的数据,如果不存在,用"w+"方式打开文件好了
$num=fgets($fp,"1024");
$num=$num+1;
//$fp=fopen($file,"w+");//之所以注释掉这一行是因为加入这一行代码之后,写入的数据就是正确的了。
rewind($fp);
fwrite($fp,$num);
fclose($fp);