Hi people,
when starting many of us were warn not to use gets() function. We know it's unsafe and it might easily crah program. On many boards there is FAQ in which there are advices not to use gets(). I wonder why such function exist in standard library and why is it written in the first place.
What is actual use of gets() exept that many of us use it in school for quick and dirty user input?
Why is it there? I assume because of historical reasons, but which reasons that is real question.
Thanks

Grunt commented: Good Question +1

Recommended Answers

All 4 Replies

Rationale:

7.19.7.7 The gets function
Because gets does not check for buffer overrun, it is generally unsafe to use when its input is not under the programmer’s control. This has caused some to question whether it should appear in the Standard at all. The Committee decided that gets was useful and convenient in those special circumstances when the programmer does have adequate control over the input, and as 35 longstanding existing practice, it needed a standard specification. In general, however, the preferred function is fgets (see §7.19.7.2).

Okay, thanks Dave

Its true that gets function is not as convenient as scanf, but its has its own merits... say, the ease of accepting strings... its not completely redundant.

Hi people,
when starting many of us were warn not to use gets() function. We know it's unsafe and it might easily crah program. On many boards there is FAQ in which there are advices not to use gets(). I wonder why such function exist in standard library and why is it written in the first place.
What is actual use of gets() exept that many of us use it in school for quick and dirty user input?
Why is it there? I assume because of historical reasons, but which reasons that is real question.
Thanks

>but its has its own merits...
There are no merits to gets.

>say, the ease of accepting strings...
I've argued this point with authors before (Dan Gookin is one such example), and have yet to hear a sufficiently good explanation of how fgets(s, n, stdin) is so hard that it justifies the teaching of unsafe programming habits. Also, it's very common for programmers to prefer the first technique they learn for a task, and if the first thing they learn is gets...

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.