Thread overview
Problem with simple Formatted Input example.
Feb 08, 2015
Venkat Akkineni
Feb 08, 2015
Ali Çehreli
Feb 08, 2015
Ali Çehreli
Feb 08, 2015
Venkat Akkineni
February 08, 2015
This simple program seems to just hang. I am probably missing something. Any help is appreciated. I am using Linux with DMD. Program compiles fine, but when enter a string & press enter, the programs seems to wait forever without returning.


import std.stdio;

void main()
{
	
	string firstName;
	readf("	%s\n", &firstName);
	writeln(firstName);
	
}


Thankyou
Venkat
February 08, 2015
On 02/07/2015 04:29 PM, Venkat Akkineni wrote:> This simple program seems to just hang. I am probably missing something.
> Any help is appreciated. I am using Linux with DMD. Program compiles
> fine, but when enter a string & press enter, the programs seems to wait
> forever without returning.
>
>
> import std.stdio;
>
> void main()
> {
>
>      string firstName;
>      readf("    %s\n", &firstName);

My earlier understanding was that readf was reading till the end of the input. So, you will see that it will terminate when you press Ctrl-D at the console. I explain that understanding here:

  http://ddili.org/ders/d.en/strings.html#ix_strings.readln

However, when I tried your code again with dmd git head, I see that readf reads the first line of entry *after* I press two Enters on the console.

Ali

February 08, 2015
On 02/07/2015 04:42 PM, Ali Çehreli wrote:

>  >      readf("    %s\n", &firstName);

> I see that readf reads the first line of entry *after* I press
> two Enters on the console.

OK, that is related to the '\n' character that you have in the format string. Also, repeating the space characters has no effect as a single space means "zero or more white space" anyway.

Ali

February 08, 2015
On Sunday, 8 February 2015 at 00:47:46 UTC, Ali Çehreli wrote:
> On 02/07/2015 04:42 PM, Ali Çehreli wrote:
>
> >  >      readf("    %s\n", &firstName);
>
> > I see that readf reads the first line of entry *after* I press
> > two Enters on the console.
>
> OK, that is related to the '\n' character that you have in the format string. Also, repeating the space characters has no effect as a single space means "zero or more white space" anyway.
>
> Ali

Thankyou, I think it was encoded to be some other character instead of a space. Once I removed the space and re-added it to the string, things seem to work.

I am reading your book. It is a great book for newbies. Thanks a lot for the effort.