Yes, and no, sir, you missed the point. The procedure here is to allocate then give away, not reading a fixed-length returned value.
Say you can only afford to have ten bytes in the stack. You allocate char s[10]; then give it to a library to parse something. Also telling it to abort if it’s going to be longer than ten bytes, of course.
Well, I don’t know your use case well enough, but I guess you might have perfect reason for that behavior.
One thing that comes to my mind is the old Try in C#
bool parsedSuccessfully = int.TryParse("123", out int result);
But I guess more popular approach would be to use Error as Values, right?
E.g. something like this
Outcome<Exception, Int> result = int.TotallyNewParse("123");
char c; scanf("%c", &c);
Great example.
Wouldn’t
getchar()
be more appropriate here? Last time I used C it was 16 years ago.Yes, and no, sir, you missed the point. The procedure here is to allocate then give away, not reading a fixed-length returned value.
Say you can only afford to have ten bytes in the stack. You allocate
char s[10];
then give it to a library to parse something. Also telling it to abort if it’s going to be longer than ten bytes, of course.