gpt4 book ai didi

php - fopen 有一些奇怪的行为

转载 作者:行者123 更新时间:2023-12-04 06:32:04 29 4
gpt4 key购买 nike

我有一个名为 denem.txt 的文件并且有内容

123456789
123456789
123456789

当我们以“a+b”模式打开文件时,PHP 应该将指针指向文件末尾,这意味着当我尝试使用 fgetc 函数获取字符时,它应该返回 False,因为 feof 为真。但是,当我使用类似的代码时
while (false !== ($char = fgetc($file))) {
echo "$char\n";
}

我得到 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 。 -> 这很奇怪,因为我没有使用过 rewind() 并且指针必须在文件末尾意味着 fgetc 必须返回 False。 ftell 返回 int 0 表示指针位于文件的开头。
但是,当我尝试使用使用指针当前位置的 fwrite 向文件写入内容时,如果 ftell 没有欺骗我们,它应该将其写入文件的开头。但是当我使用 fwrite 猜测会发生什么时,它将它写入文件的末尾,我的文件变成
123456789
123456789
123456789Test

你有什么想法吗?

最佳答案

您需要了解a+模式。

它打开文件以进行读取和追加(在文件末尾写入)。如果文件不存在,则创建该文件。读取的初始文件位置在开始 文件,但输出总是附加到 结束 的文件。

只有一个指针最初位于文件的开头,但是当尝试写入操作时,它会移动到文件的末尾。您可以使用 fseek 重新定位它或 rewind文件中的任何位置都可以读取,但写入操作会将其移回文件末尾。

关于php - fopen 有一些奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5276272/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com