Today we are going to discuss FILE SYSTEM operations using the C language. Till now we have worked with the RAM for storing our variables and our data. But the RAM is not persistent. We need to store data permanently. So we store them in permanent memory like hard disks or CDs/DVDs, in files. Different types of data are stored in different type of files, but for our purposes we’ll work with text files in windows system which have an extension of ‘.txt‘.
Today we’re going to discuss two topics which are rarely taught in a C programming college course, Unions & Enums. One may justify that by saying they are not absolutely necessary for basic knowledge in programming, or that these topics are rarely asked in interviews. But if you become a professional C developer, you’ll have extensive use of them. These are particularly useful in low level programming, like with embedded systems and robotics.
One of the main motivations in the development of computers was data processing. One of the earliest punched card machines (tabulation machine) were used to help process data for the 1890 U.S. Census. Thus in programming languages data types were so important, as there are tools and methods to process data according to their type.
The process of allocating memory while a program is running is called dynamic memory allocation. In C programming, dynamic memory allocation is achieved with the standard library functions malloc(), calloc(), realloc() and free().
To proceed to the next sections in our discussion on C programming language, we should learn the concept of void pointers, i.e. pointers of no specific type, and type casting, i.e. manually changing the data type of a variable. Type conversion can happen automatically (implicitly) or manually (explicitly). The later is termed as type-casting.
Pointers are used extensively in array operations. The name of the array is actually a reference to the address of the first element, rather than the actual array. Thus the array name is a pointer. So when we pass an array as an argument to a function, we are not actually passing a copy of the array (as we do in case of a variable), but we are passing a copy of the pointer to the first element of that array. This is the “pass by reference” hack that we discussed earlier.
To be able to reap the best benefits from pointers, you’ll have to have a deep understanding of them. This blog is going to be very conceptual and we might not be writing real-world value code here, but these program snippets will help you use pointers in a very productive and efficient manner in future. We’ll discuss two use cases of pointers that we generally overlook: strings and the scanf function.
C is a procedural language, which means it follows a series of steps/procedures in a systematic order to solve a problem. These procedures are often organized in functions. These functions take in some value(s) as argument(s), operate on them and return an output. But apart from this approach, a function can even change the state of other variables in the global scope, perform input/output operations etc.
Pointer is something that points to the memory location where the value of a variable is stored. Pointers have data-types. This data-type has nothing to do with the value of the pointer itself, because a pointer has a value which is an address, i.e. a number. So the value of a pointer is always an int.
Today we are going to discuss about arrays in C. Arrays is a data structure that can store a fixed-size sequential collection of elements of the same type. In order to understand arrays we must first understand the meaning of the highlighted words of the above definition in terms of programming.