Macintosh text file with invalid line breaks are created
    Vladimir Panteleev via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Wed Sep 28 09:53:24 PDT 2016
    
    
  
On Wednesday, 28 September 2016 at 06:52:51 UTC, Andre Pany wrote:
> Hi,
>
> following application creates a text file with strange content:
>
> void writeTextFile(string filePath, string text)
> {
> 	import std.stdio: File;
> 	auto f = File(filePath, "w");
> 	f.write(text);
> 	f.close();
> }
>
> void main()
> {
> 	import std.ascii: newline;
> 	
> 	string s = "a=1"~newline~"b=2";
> 	writeTextFile("./test.txt", s);
> }
>
> Notepad++ detects the file as macintosh UTF8 file.
> The file has following content:
> a=1CR
> CRLF
> b=2
>
> Where the first CR comes from? Is this a bug?
> dmd v2.071.2 on win10
Since the file is opened in text mode (which is the default), the 
C runtime automatically translates the single \n to a \r\n pair 
when writing the file. Since std.ascii.newline is defined to be 
"\r\n" on Windows, it ends up being written as "\r\r\n".
You could either open the file in binary mode (use "wb" as the 
second argument), or always use "\n" for line separators.
    
    
More information about the Digitalmars-d-learn
mailing list