_read returns the number of bytes read, which might be less than count if there are fewer than count bytes left in the file or if the file was opened in text mode, in which case each carriage return–line feed (CR-LF) pair is replaced with a single linefeed character. Only the single linefeed character is counted in the return value. The replacement does not affect the file pointer.
註意這壹段: in which case each carriage return–line feed (CR-LF) pair is replaced with a single linefeed character
就是說如果用text模式打開的話, 文件換行時可能在文本中有2個字符----換行和縮進(CR-LF), 而在return的時候系統是把它作為1個回車符號('\n')所返回的. 所以會導致這個情況