On Thursday, 18 December 2014 at 10:43:32 UTC, yazd wrote:
On Thursday, 18 December 2014 at 10:16:38 UTC, Colin wrote:
On Thursday, 18 December 2014 at 09:25:47 UTC, ketmar via
Digitalmars-d-learn wrote:
On Thu, 18 Dec 2014 09:18:35 +0000
Colin via Digitalmars-d-learn
<digitalmars-d-learn@puremagic.com> wrote:
Why does std.file.readText() append a Line Feed char onto
the end of the string?
I have a file with the following contents in it:
Name = Int
Other=Float
One More = String(Random;)
I then have the code:
void main(string[] args){
const text = "Name = Int
Other=Float
One More = String(Random;)";
string input = readText(args[1]);
writefln("Raw data");
writefln("D) %s", cast(ubyte[])text[$-5..$]);
writefln("File) %s", cast(ubyte[])input[$-5..$]);
}
This produces:
Raw data
D) [100, 111, 109, 59, 41]
File) [111, 109, 59, 41, 10]
Any Idea why the reading from the File adds on that extra
'10' character?
I don't think it's my editor adding chars to the end of the
file, as I'm using vi.
you *definetely* has the last line ended with '\n'.
I dont see how, I copy and pasted from the string definition
in D, directly after the first " and directly before the last
".
If I look at the file in vim with line numbers turned on, the
file is like this. So I really dont think I have a new line in
the file...
1 Name = Int
2 Other=Float
3 One More = String(Random;)
You can make sure using `hexdump -C file`. I tested locally
creating a file using vi, and it does indeed have a '\n' at the
end of file.
Ah, I see. That's a little annoying.
Thanks folks!