Terrible<p>The first rule of C is to ALWAYS use C<p>The second rule of C is to NEVER use [u]intN_t, use [u]int_leastN_t instead and (unsigned) char when you want to deal with bytes<p>The 3rd rule of C is to never use anything else when size_t should be used<p>The 4th rule of C is that everyone has his own style, so declaring variables on top is totally acceptable (and more clean IMO)<p>The 5th rule of C is &quot;enjoy your stack overflow&quot; when using VLAs instead of malloc (not to mention that VLAs are optional in C11)<p>&gt;which also means it&#x27;s capable of holding the largest memory offset in your program.<p>wrong<p>&gt;C99 gives us the power of &lt;stdbool.h&gt; which defines true to 1 and false to 0<p>I do use it but it is useless<p>&gt;readability-braces-around-statements — force all if&#x2F;while&#x2F;for statement bodies to be enclosed in braces<p>don&#x27;t use a shitty editor<p>&gt;You should always use calloc<p>good thing calloc has: checks for overflows when multiplying the typesize and the arraylen<p>bad thing: makes programmers think that it will make your pointers null<p>&gt;you can wrap it with #define mycalloc(N) calloc(1, N).<p>but the two arguments is the only good thing calloc has<p>&gt;growthOptional<p>I can&#x27;t see any reason why the second one is considered better