On Tue, 30 Dec 2008 10:56:08 -0500, Michael P. <[email protected]> wrote:
>Jarrett Billingsley Wrote: > >> On Mon, Dec 29, 2008 at 10:36 PM, Michael P. <[email protected]> wrote: >> > import std.stdio; >> > import std.cstream; >> > void main() >> > { >> > char[][] names; >> > char[] currentName; >> > while( true ) >> > { >> > din.readf( "%s", ¤tName ); >> > if( currentName == "stop" ) >> > { >> > break; >> > } >> > else >> > { >> names ~= currentName; >> > } >> > } >> > foreach( name; names ) >> > { >> > writefln( name ); >> > } >> > } >> >> ~= performs an append. It adds the given item to the end of the array. > >Under 1.036, this does not work. > >Input: >michael >is >cool >stop > >The output is: >stopeal >st >stop > >What seems to be happening is that the letters of stop are added to the word, >and if the word is longer than stop, then the rest of the letters of the word >are added. >So, I'm not sure if this is a bug or what... >-Michael P. currentName is used as a buffer that is overwritten on each call to din.readf. It is easier to explicitly duplicate the contents to create a copy that is stored in the array names. >> names ~= currentName; names~=currentName.dup; Gide
