저는 C 및 C++ 배경에서 왔지만 일부 웹 기능도 가지고 있습니다. 우리 모두는 C가 (잘하면) 읽을 것을하기 전에 feof
을 FILE*
에두고 있다는 것을 알고 있습니다. 이것은 초보자를 C와 C++에 자주 붙잡는 것입니다. 이것은 PHP의 구현에서도 마찬가지입니까?PHP의 feof 동작 대 C의
필자는 파일이 소켓이나 읽는 것을 끝내기 전에 크기를 알 수없는 다른 것일 수 있다는 것을 알았습니다. 그러나) 거의 모든 PHP 예제 (내가 본 php.net에서 발견 심지어는 다음과 같이 보이는 (알람은 내 머리에서 떨어져 이동 :
$f = fopen("whatever.txt", "rb");
while(!feof($f)) {
echo fgets($f);
}
fclose($f);
내가 이렇게이를 작성하고이를 방지하는 것이 바람직하다 알고 문제 :
$f = fopen("whatever.txt", "rb");
while($line = fgets($f)) {
echo $line;
}
fclose($f);
하지만 "잘못된 방법"을 한 경우에 일을 실패,하지만 난 그게 잘못된 동작이 발생할 얻을 수없는 경우 그 점 외에 내가 테스트를 시도의이 정확하게 과학적하지 않습니다.. 하지만 그럴 가치가 있다고 생각했습니다.
PHP에서 fread
보다 먼저 feof
을 부르는 것이 올바르지 않습니까?
PHP가 C의 버전과 다르게 할 수 있었던 몇 가지 방법이 있지만 나는 그들이 단점이 있다고 느낍니다.
기본값은! EOF 일 수 있습니다. 일부 모서리의 경우 올바르지 않을 수 있기 때문에 차선책입니다.
그들이
fopen
통화 중에 파일 크기를 얻을 수 있지만이 일치하지 않는 행동을 산출, 파일 자원의 모든 유형에서 작동하지 않을 수 있고 느린 것입니다.
이 귀중한 공헌을하기 위해 계정을 만드셨습니까? –
C에서 EOF 플래그를 설정할 수있는 연산 전에'feof'를 호출하는 것이 가장 확실한 논리적 오류입니다. 'fopen'은 그러한 작업 중 하나가 아닙니다. –
Arrrggghhh! 그것은 논리적, 구문 론적, 또는 그 밖의 오류가 아니라는 것이 가장 확실합니다. 그것은 완벽하게 유효합니다. 그것이 무엇을하는지 이해한다면 위의 MightyE가 설명했던대로 예상대로 작동합니다. 질문은 조건을 오류로 구성했습니다. 그렇지 않습니다. – Anonymous