digitalmars.D.bugs - bug: write string
- bug d.com (19/19) Feb 09 2005 $ cat writeString.d
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (10/36) Feb 09 2005 No, it's not:
$ cat writeString.d import std.stream; int main() { char[] s = "hello\n"; File f = new File("test2", FileMode.OutNew); f.write(s); f.close(); return 0; } $ dmd writeString.d gcc writeString.o -o writeString -lphobos -lpthread -lm $ ./writeString $ vi test2 ^F^ ^ ^ hello The first 4 chars are garbage. dmd v0.111 gcc version 3.3.3 Linux 2.6.7-gentoo-r11
Feb 09 2005
bug d.com wrote:$ cat writeString.d import std.stream; int main() { char[] s = "hello\n"; File f = new File("test2", FileMode.OutNew); f.write(s); f.close(); return 0; }Not a bug, just a silly API...$ dmd writeString.d gcc writeString.o -o writeString -lphobos -lpthread -lm $ ./writeString $ vi test2 ^F^ ^ ^ hello The first 4 chars are garbage.No, it's not: 00000000 00 00 00 06 68 65 6c 6c 6f 0a |....hello.| It's your string structure, with the length first! If you want to write the string, you instead use:f.writeString(s);http://www.digitalmars.com/d/std_stream.html:void write(char[] s) Write a basic type or counted string.void writeString(char[] s) Write a string of textClear as mud? --anders
Feb 09 2005