2013-03-31 2 views
-1

그냥 matrix.txt 파일에서 읽은 행렬에 간단한 정렬 알고리즘을 적용하고 파일에 정렬 된 행을 다시 추가하려고했습니다.쓸데없는 새로운 줄을 텍스트 문서에 쓸 때

문제는 원하지 않는 새 줄이 텍스트 파일에 기록된다는 것입니다. 나는 또한 echo과 같은 것을 텍스트 파일에 쓰려고했지만, echo은 모든 것을 잘 인쇄했다.

// .. reading the file and sorting the matrix .. 

    // Write the sorted matrix back to the text file 
    $handle = @fopen("matrix.txt", "a"); 
    if ($handle) { 
    fwrite($handle, PHP_EOL . PHP_EOL . "Sorted matrix:" . PHP_EOL); 
    for ($i = 0; $i < $n; $i++) { 
     for ($j = 0; $j < $m; $j++) { 
      echo $matrix[$i][$j] . " "; 
      fwrite($handle, $matrix[$i][$j] . " ");   
     } 
     fwrite($handle, PHP_EOL); 
     echo "<br>"; 
    } 
    fclose($handle); 
} 

matrix.txt 파일 내용 :이 자체적으로 매트릭스 좋게 정렬 각 행 메아리 웹 브라우저에서

1 2 5 2 5 8 12 323 1 4 
8 32 2 1 3 82 2 8 4 2 
1 2 5 2 5 8 12 323 1 4 
8 32 2 1 3 82 2 8 4 2 

; 그러나 텍스트 파일에 다음이 추가됩니다.

Matrix sorted using selection sort: 
1 1 2 2 4 
5 5 8 12 323 
1 2 2 2 
3 4 8 8 32 82 
1 1 2 2 4 
5 5 8 12 323 
1 2 2 2 3 4 8 8 32 82 

어떤 단서가 발생할 수 있습니까? 미리 감사드립니다!

+0

Re : "웹 브라우저에서는 행렬을 멋지게 정렬하고 각 행을 자체적으로 표시합니다."이것은 HTML이 '
'을 (이미 알고있는 것처럼) 사용하기 때문입니다. "소스보기"를하면 텍스트 파일과 마찬가지로 추가 줄 바꿈이 있음을 알 수 있습니다. – ruakh

+0

downvote 이유를 지정하여 의견을 추가하십시오. –

답변

3

게시 된 코드에 문제가 없습니다. 그것은 당신이 제공 한 입력 행렬에 있습니다. 모든 추가 개행 문자는 마지막 행을 제외하고 행의 끝에 있었던 항목에 해당합니다. 행을 읽을 때 각 행의 마지막 개행 문자가 포함되어 있고 사용하려고 생각하는 explode은이를 제거하지 못하기 때문입니다. 이 문제를 해결하기 위해 폭발하기 전에 trim 줄을 간단히 지정하거나 \r\n자를 구체적으로 제거 할 수 있습니다.

+0

읽은 후 각 줄을 다듬은 것이 트릭입니다. 감사! –

관련 문제