Can we use strings with scanf?

Ferhat Kurtulmuş aferust at gmail.com
Mon Jan 25 18:28:09 UTC 2021


On Monday, 25 January 2021 at 17:38:21 UTC, Rempas wrote:
> On Monday, 25 January 2021 at 10:33:14 UTC, Mike Parker wrote:
>> On Monday, 25 January 2021 at 09:16:11 UTC, Rempas wrote:
>>> [...]
>>
>> The * has a different meaning for scanf than for printf ([1] 
>> vs [2]).
>>
>> There's also the issue that a string is immutable(char)[].
>>
>> If you really, really, really, must use scanf:
>>
>> ```
>> char[bufSize] buf;
>> scanf("%s", buf.ptr);
>> ```
>>
>> But please don't. This is D, not 1990s C.
>>
>> [1] https://www.cplusplus.com/reference/cstdio/scanf/
>> [2] https://www.cplusplus.com/reference/cstdio/printf/
>
> Thanks! Actually for some reason. It won't accept a char[size]. 
> I created a heap allocated (with pureFree and pureMalloc) 
> chrar*, then used fgets() and created an empty string and 
> looped through the result adding one by one character until the 
> '\n' which is not included.

char[buffsize] works if buffsize is a compile time constant. Or 
just char[1024]. İt is a static array, and it's size must be 
defined at compile time.


More information about the Digitalmars-d-learn mailing list