0

根据手册,如果您a/a+在函数中选择模式fopen(),文件指针将放在末尾。

但是为什么我得到 0 使用ftell()并且feof()仍然返回false?如果文件指针在末尾。

例如:

$handle=fopen("./file.txt","w");
fwrite($handle,1234567890);
fclose($handle);
$handle=fopen("./file.txt","a+");
echo getc($handle);
fclose($handle);

我得到了 1,但如果文件指针放在末尾,我不应该得到 0 吗?

4

3 回答 3

3

a+意思是从头读,写到尾。

这就是为什么你从流中得到一个字符。

在内部,您有两个流,STDIN并且STDOUT.

于 2015-06-10T21:35:22.857 回答
2

"a"-只写。打开并写入文件末尾,如果新文件不存在,则创建一个新文件。

"a+"-读/写。通过写入文件末尾来保留文件内容。

于 2017-01-12T10:00:41.213 回答
1

就在文档中,靠近顶部:

ftell()为仅附加流(以“a”标志打开)给出未定义的结果。

于 2015-06-10T21:13:40.823 回答