What is stdin in C language?

No, stdin is not “a memory address”. It’s an I/O stream, basically an operating-system level abstraction that allows data to be read (or written, in the case of stdout). You need to use the proper stream-oriented I/O functions to read from the stream. Of course you can read from RAM too, so it’s best to write your own … Read more

Categories c Tags

Debug vs Release in CMake

With CMake, it’s generally recommended to do an “out of source” build. Create your CMakeLists.txt in the root of your project. Then from the root of your project: And for Debug (again from the root of your project): Release / Debug will add the appropriate flags for your compiler. There are also RelWithDebInfo and MinSizeRel build configurations. You can modify/add to the flags by specifying a toolchain file in … Read more

%i or %d to print integer in C using printf()?

They are completely equivalent when used with printf(). Personally, I prefer %d, it’s used more often (should I say “it’s the idiomatic conversion specifier for int“?). (One difference between %i and %d is that when used with scanf(), then %d always expects a decimal integer, whereas %i recognizes the 0 and 0x prefixes as octal and hexadecimal, but no sane programmer uses scanf() anyway so this should not be a concern.)

Returning an array using C

You can’t return arrays from functions in C. You also can’t (shouldn’t) do this: returned is created with automatic storage duration and references to it will become invalid once it leaves its declaring scope, i.e., when the function returns. You will need to dynamically allocate the memory inside of the function or fill a preallocated buffer … Read more

What is the difference between %f and %lf in C?

The short answer is that it has no impact on printf, and denotes use of float or double in scanf. For printf, arguments of type float are promoted to double so both %f and %lf are used for double. For scanf, you should use %f for float and %lf for double. More detail for the language lawyers among us below: There is no difference between %f and %lf in the printf family. The ISO C standard (all references within are from C11), section 7.21.6.1 The fprintf … Read more

Categories c Tags

What is the difference between stdin and STDIN_FILENO?

The interface. Like everyone else has said, stdin is a FILE * as defined by the standard c library. You can use some of the higher level interfaces like fread, fwrite, and fprintf. On the other hand, STDIN_FILENO is just a file descriptor (almost certainly 0). This uses a slight lower level interface through the … Read more

Categories C Tags

How to make sense of modulo in c

The modulo operator in C will give the remainder that is left over when one number is divided by another. For example, 23 % 4 will result in 3 since 23 is not evenly divisible by 4, and a remainder of 3 is left over. If you want to output whether or not a number … Read more