The number returned by that program is still larger than it needs to be in Windows. There are 41 characters to read in Windows, but $size_of_DATA is 44.
| [reply] [d/l] |
Must be a windows vs. unix issue then. The numbers work out on my system. Also, in your previous code, the numbers were all 560 on my system.
| [reply] |
Of course it is. In text mode in Windows, \x0D\x0A is two bytes, but the single character.
But it's not just a Windows issue; it's also an encoding issue. If you set the encoding of DATA or of your FILE to be a multi-byte encoding such as UTF-8, then you'll have a discrepency between the number of characters and the number of bytes (even on unix) if you have any multi-byte characters in your DATA or in your FILE.
The whole point is that there is no way of knowing the number of characters in a file, since there's no relation between the size of the file and the number of characters in it.
It is therefore useless to "optimize" the value passed to read's third parameter, a number of characters (not bytes outside of :raw mode). Any value at least as large as the number of bytes in the file will do nicely.
| [reply] [d/l] [select] |