reading formatted strings: readf("%s", &stringvar)

Matt Peterson ricochet1k at gmail.com
Tue Mar 27 11:56:56 PDT 2012


On Tuesday, 27 March 2012 at 15:14:07 UTC, Andrei Alexandrescu
wrote:
> On 3/27/12 6:54 AM, Tyro[17] wrote:
>> On Tuesday, 27 March 2012 at 00:05:51 UTC, Andrei Alexandrescu 
>> wrote:
>>> On 3/26/12 2:52 PM, Tyro[17] wrote:
>>>> Couldn't the state of stdin be checked upon entrance into 
>>>> readf
>>>> and reopened if it is already closed?
>>>
>>> That won't work.
>>
>> But this does:
> [snip]
>
> Very interesting! But then what if people press Ctrl-C? That 
> would end the input instead of ending the program.
>
>> Could that technique be used to implement readf for stdin?
>
> I don't think we should pursue this path.
>
>>>> Wouldn't that accomplish the desired effect while avoiding
>>>> the pitfalls of scanf?
>>>
>>> I don't think this is a pitfall. Essentially you don't have a
>>> definition of what constitutes a chunk of input. Once you get 
>>> that
>>> define, you should be able to express it more or less easily.
>>>
>>
>> I'm of the opinion that Ctrl-D defines the boundary of that
>> chunk of input. We simply have to prevent it from closing
>> the stream when working with stdin.
>
> You're in a sparse minority at best. Every Unix application out 
> there uses Ctrl-D for end-of-console-input, and your users 
> would be surprised by your exotic use of it.
>
> Why not pick any other character for end of chunk - double 
> newline, Ctrl-S, pretty much anything but Ctrl-D? It's a waste 
> of your time to fight a long-established standard.
>
>
> Andrei

GDB handles Ctrl-D differently. It doesn't close the input on the
first one, it waits for the second one and then exits. After the
first one it acts like you typed 'quit', which asks you if you
really want to quit when there's a program still running.


More information about the Digitalmars-d mailing list