As I wrote in last week’s Lesson, the C23 standard renders the memset() function — a standard C library function for over 30 years — obsolete. If you want to initialize a buffer, you can use the secure memset_s() or just initialize the buffer manually or with your own memset()-like function.
Continue reading
Category Archives: Lesson
The Perils of the memset() Function
While researching the upcoming — and significant — C23 version of the C programming language, I learned something surprising: The memset() function will be deprecated. It effectively does nothing when used in the C23 standard. The reason makes a lot of sense.
Continue reading
How Many Characters Output – So Far?
I doubt any C programmer has memorized all of the printf() function’s placeholders, options, and settings. It’s a character salad of interesting and weird things. One of the strangest has to be the %n placeholder.
Continue reading
How Many Characters Output?
I don’t think I’ve ever used the return value from a printf() statement. Yes, the function has an int return value, which is the number of characters output. This value can be difficult to guess.
Continue reading
Variable Scope
In C programming, variables declared within a function are local to the function. Specifically, they’re the auto storage class, the default. External, or global, variables are defined outside of a function declaration and are of the extern storage class. These variables are available to all functions. But the scope within a function can also be limited, depending on where the variable is declared.
Continue reading
Capturing a Program’s Return Value in Linux
As I wrote in last week’s Lesson, the system() function can’t be used in Linux to obtain a program’s return value. Instead, you must use one of the execl() family of functions. Further, this function must be spawned as a child process. This task involves using the fork() and wait() functions.
Continue reading
Capturing a Program’s Return Value
At the end of the main() function, a return statement must surrender an integer value to the operating system. Does a higher value please the OS? Is it offended by zero? What exactly happens with the value returned when your program is done?
Continue reading
Oops: A (Not Really) 3D Array
I screwed up some code in a most delightful manner, all without knowing what I did. In fact, it was a student who ran my less-than-brilliant code and discovered the obvious flaw. But I was clueless.
Continue reading
My Own strcasecmp() Function – Round Three
The strcasecmp() function isn’t part of the standard C library, though many compilers feature it. As having the function is handy, I wrote about crafting your own version back in 2019. Alas, that implementation is flawed.
Continue reading
A Tally of Unique Words, Part VI
Any mortal programmer would have stopped with last week’s Lesson, where a tally of unique and duplicate words is output. This is the desired result, right? Yes, but it’s an un-orderly list.
Continue reading