The thing to understand about files is that they are only one-dimensional streams of bytes. A line ending is just one (or two, depending on your OS) bytes, and the next byte after that is more text.
In order to insert some text at the end of a line, you need to overwrite the line ending and some bytes after it. If you try to do that in the original file, you will be stomping on the bytes you haven't read yet, and things will go horribly wrong.
Three common ways to avoid that problem include:
- Write to a new file, then copy it over the original when done (as in above post)
- Read the whole file in to memory, modify in memory, then write the whole thing out from scratch. (big files vs small memory cause obvious problems here)
- Fixed width fields; make every line take up N bytes. (You know the next few bytes aren't used and can be overwritten safely, but your lines can't get any longer than N, ever.)
| [reply] |
| [reply] [d/l] |
| [reply] |