<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="https://n-i.vercel.app/feed.xml" rel="self" type="application/atom+xml" /><link href="https://n-i.vercel.app/" rel="alternate" type="text/html" /><updated>2026-08-14T12:19:13+00:00</updated><id>https://n-i.vercel.app/feed.xml</id><title type="html">Imad Najam | Full-Stack Developer, Next.js, Laravel, FastAPI</title><subtitle>Full-stack developer in Casablanca building production web platforms with Next.js, TypeScript, Laravel and FastAPI. See live projects, experience and contact details.</subtitle><author><name>Imad Najam</name></author><entry><title type="html">C Programming: Learn the Basics in 5 Days</title><link href="https://n-i.vercel.app/blog/c-programming-in-5-days/" rel="alternate" type="text/html" title="C Programming: Learn the Basics in 5 Days" /><published>2024-07-17T00:00:00+00:00</published><updated>2024-07-17T00:00:00+00:00</updated><id>https://n-i.vercel.app/blog/c-programming-in-5-days</id><content type="html" xml:base="https://n-i.vercel.app/blog/c-programming-in-5-days/"><![CDATA[<p>Dive into the fundamentals of C programming with this comprehensive 5-day tutorial. Ideal for
beginners, this guide covers loops, conditionals, basic input/output operations, and more to
kickstart your journey into programming.</p>

<hr />

<h2 id="jump-to-section">Jump to Section</h2>

<ul>
  <li><a href="#c-programming-tutorial">Introduction</a>
    <ul>
      <li><a href="#hello-world-with-variables-declaration">Hello World</a></li>
    </ul>
  </li>
  <li><a href="#multiplication-and-basic-inputoutput">Input/Output</a></li>
  <li><a href="#loop-statements">Loop Statements</a>
    <ul>
      <li><a href="#while-statement">while Statement</a></li>
      <li><a href="#do-while-statement">do-while Statement</a></li>
      <li><a href="#break-statement">break Statement</a></li>
      <li><a href="#for-statement">for Statement</a></li>
      <li><a href="#example-of-for">Example of for</a></li>
      <li><a href="#for-index-declarations">For Index Declarations</a></li>
    </ul>
  </li>
  <li><a href="#functions">Functions</a>
    <ul>
      <li><a href="#function-definitions">Function Definitions</a></li>
      <li><a href="#function-declarations">Function Declarations</a></li>
      <li><a href="#function-calls">Function Calls</a></li>
      <li><a href="#function-call-semantics">Function Call Semantics</a></li>
    </ul>
  </li>
  <li><a href="#mini-project">Mini Project</a>
    <ul>
      <li><a href="#bank-employee-management-project">Bank Employee Management Project</a></li>
    </ul>
  </li>
</ul>

<h2 id="c-programming-tutorial">C Programming Tutorial</h2>

<p>Welcome to your C programming tutorial! Over the next five days, you’ll embark on a journey to learn the foundational elements of C, one of the most powerful and widely-used programming languages. By the end of this tutorial, you will have a solid understanding of key programming concepts that will serve as a stepping stone to more advanced topics.</p>

<hr />
<h3 id="hello-world-with-variables-declaration">Hello World with Variables Declaration</h3>

<p>This program declares variables, takes input, and displays output, reinforcing your understanding of the core concepts.</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
    <span class="kt">int</span> <span class="n">age</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
    <span class="kt">char</span> <span class="n">name</span><span class="p">[]</span> <span class="o">=</span> <span class="s">"Imad"</span><span class="p">;</span>
    <span class="n">printf</span><span class="p">(</span><span class="s">"Hello %s, your age is %i years!</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">age</span><span class="p">);</span>
    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<hr />
<h2 id="multiplication-and-basic-inputoutput">Multiplication and Basic Input/Output</h2>

<p>we’ll put together what you’ve learned and introduce basic input/output operations. You’ll write a program that takes user input, performs some calculations, and displays the results. This will help you understand how to interact with users and handle data dynamically.</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">const</span> <span class="kt">int</span> <span class="n">A</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
    <span class="k">const</span> <span class="kt">int</span> <span class="n">B</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>

    <span class="n">printf</span><span class="p">(</span><span class="s">"%i * %i = %i</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">A</span><span class="p">,</span> <span class="n">B</span><span class="p">,</span> <span class="n">A</span> <span class="o">*</span> <span class="n">B</span><span class="p">);</span>

    <span class="kt">int</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">;</span>
    <span class="kt">char</span> <span class="n">name</span><span class="p">[</span><span class="mi">100</span><span class="p">];</span>
    <span class="n">printf</span><span class="p">(</span><span class="s">"Insert your name: "</span><span class="p">);</span>
    <span class="n">scanf</span><span class="p">(</span><span class="s">"%99s"</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
    <span class="n">printf</span><span class="p">(</span><span class="s">"Enter two integers separated by a space: "</span><span class="p">);</span>
    <span class="n">scanf</span><span class="p">(</span><span class="s">"%d %d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">x</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">y</span><span class="p">);</span>
    <span class="n">printf</span><span class="p">(</span><span class="s">"Hello: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
    <span class="n">printf</span><span class="p">(</span><span class="s">"%d * %d = %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">x</span> <span class="o">*</span> <span class="n">y</span><span class="p">);</span>
    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>

</code></pre></div></div>

<hr />
<h2 id="loop-statements">Loop Statements</h2>

<h3 id="while-statement">while Statement</h3>

<p>The <code class="language-plaintext highlighter-rouge">while</code> statement is the simplest loop construct. It looks like
this:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">while</span> <span class="p">(</span><span class="n">test</span><span class="p">)</span>
  <span class="n">body</span>
</code></pre></div></div>

<p>Here, <code class="language-plaintext highlighter-rouge">body</code> is a statement (often a nested block) to repeat,
and <code class="language-plaintext highlighter-rouge">test</code> is the test expression that controls whether to
repeat it again. Each iteration of the loop starts by computing
<code class="language-plaintext highlighter-rouge">test</code> and, if it is true (nonzero), that means the loop
should execute <code class="language-plaintext highlighter-rouge">body</code> again and then start over.</p>

<p>Here’s an example of advancing to the last structure in a chain of
structures chained through the <code class="language-plaintext highlighter-rouge">next</code> field:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#include</span> <span class="cpf">&lt;stddef.h&gt;</span><span class="c1"> /* Defines NULL. */</span><span class="cp">
</span><span class="err">…</span>
<span class="k">while</span> <span class="p">(</span><span class="n">chain</span><span class="o">-&gt;</span><span class="n">next</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
  <span class="n">chain</span> <span class="o">=</span> <span class="n">chain</span><span class="o">-&gt;</span><span class="n">next</span><span class="p">;</span>
</code></pre></div></div>

<p>This code assumes the chain isn’t empty to start with; if the chain is
empty (that is, if <code class="language-plaintext highlighter-rouge">chain</code> is a null pointer), the code gets a <code class="language-plaintext highlighter-rouge">SIGSEGV</code>
signal trying to dereference that null pointer</p>

<hr />
<h3 id="do-while-statement">do-while Statement</h3>

<p>The <code class="language-plaintext highlighter-rouge">do</code>–<code class="language-plaintext highlighter-rouge">while</code> statement is a simple loop construct that performs the
test at the end of the iteration.</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">do</span>
  <span class="n">body</span>
<span class="nf">while</span> <span class="p">(</span><span class="n">test</span><span class="p">);</span>
</code></pre></div></div>

<p>Here, <code class="language-plaintext highlighter-rouge">body</code> is a statement (possibly a block) to repeat, and
<code class="language-plaintext highlighter-rouge">test</code> is an expression that controls whether to repeat it
again.</p>

<p>Each iteration of the loop starts by executing <code class="language-plaintext highlighter-rouge">body</code>. Then
it computes <code class="language-plaintext highlighter-rouge">test</code> and, if it is true (nonzero), that means
to go back and start over with <code class="language-plaintext highlighter-rouge">body</code>. If <code class="language-plaintext highlighter-rouge">test</code>
is false (zero), then the loop stops repeating and execution moves on
past it.</p>

<h3 id="break-statement">break Statement</h3>

<hr />
<p>The <code class="language-plaintext highlighter-rouge">break</code> statement looks like ‘<code class="language-plaintext highlighter-rouge">break;</code>’. Its effect is to
exit immediately from the innermost loop construct or <code class="language-plaintext highlighter-rouge">switch</code> statement
.</p>

<p>For example, this loop advances <code class="language-plaintext highlighter-rouge">p</code> until the next null character or
newline.</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">p</span><span class="p">)</span>
  <span class="p">{</span>
    <span class="cm">/* End loop if we have reached a newline.  */</span>
    <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">p</span> <span class="o">==</span> <span class="sc">'\n'</span><span class="p">)</span>
      <span class="k">break</span><span class="p">;</span>
    <span class="n">p</span><span class="o">++</span>
  <span class="p">}</span>
</code></pre></div></div>

<p>When there are nested loops, the <code class="language-plaintext highlighter-rouge">break</code> statement exits from the
innermost loop containing it.</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">struct</span> <span class="n">list_if_tuples</span>
<span class="p">{</span>
  <span class="k">struct</span> <span class="n">list_if_tuples</span> <span class="n">next</span><span class="p">;</span>
  <span class="kt">int</span> <span class="n">length</span><span class="p">;</span>
  <span class="n">data</span> <span class="o">*</span><span class="n">contents</span><span class="p">;</span>
<span class="p">};</span>

<span class="kt">void</span>
<span class="nf">process_all_elements</span> <span class="p">(</span><span class="k">struct</span> <span class="n">list_if_tuples</span> <span class="o">*</span><span class="n">list</span><span class="p">)</span>
<span class="p">{</span>
  <span class="k">while</span> <span class="p">(</span><span class="n">list</span><span class="p">)</span>
    <span class="p">{</span>
      <span class="cm">/* Process all the elements in this node’s vector,
         stopping when we reach one that is null.  */</span>
      <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">list</span><span class="o">-&gt;</span><span class="n">length</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span>
        <span class="p">{</span>
          <span class="cm">/* Null element terminates this node’s vector.  */</span>
          <span class="k">if</span> <span class="p">(</span><span class="n">list</span><span class="o">-&gt;</span><span class="n">contents</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
            <span class="cm">/* Exit the for loop.  */</span>
            <span class="k">break</span><span class="p">;</span>
          <span class="cm">/* Operate on the next element.  */</span>
          <span class="n">process_element</span> <span class="p">(</span><span class="n">list</span><span class="o">-&gt;</span><span class="n">contents</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
        <span class="p">}</span>

      <span class="n">list</span> <span class="o">=</span> <span class="n">list</span><span class="o">-&gt;</span><span class="n">next</span><span class="p">;</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>

<hr />
<h3 id="for-statement">for Statement</h3>

<p>A <code class="language-plaintext highlighter-rouge">for</code> statement uses three expressions written inside a parenthetical
group to define the repetition of the loop. The first expression says
how to prepare to start the loop. The second says how to test, before
each iteration, whether to continue looping. The third says how to
advance, at the end of an iteration, for the next iteration. All
together, it looks like this:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span> <span class="p">(</span><span class="n">start</span><span class="p">;</span> <span class="k">continue</span><span class="o">-</span><span class="n">test</span><span class="p">;</span> <span class="n">advance</span><span class="p">)</span>
  <span class="n">body</span>
</code></pre></div></div>

<p>The first thing the <code class="language-plaintext highlighter-rouge">for</code> statement does is compute <code class="language-plaintext highlighter-rouge">start</code>.
The next thing it does is compute the expression
<code class="language-plaintext highlighter-rouge">continue-test</code>. If that expression is false (zero), the
<code class="language-plaintext highlighter-rouge">for</code> statement finishes immediately, so <code class="language-plaintext highlighter-rouge">body</code> is executed
zero times.</p>

<p>However, if <code class="language-plaintext highlighter-rouge">continue-test</code> is true (nonzero), the <code class="language-plaintext highlighter-rouge">for</code>
statement executes <code class="language-plaintext highlighter-rouge">body</code>, then <code class="language-plaintext highlighter-rouge">advance</code>. Then it
loops back to the not-quite-top to test <code class="language-plaintext highlighter-rouge">continue-test</code>
again. But it does not compute <code class="language-plaintext highlighter-rouge">start</code> again.</p>

<hr />
<h3 id="example-of-for">Example of for</h3>

<p>Here is the <code class="language-plaintext highlighter-rouge">for</code> statement from the iterative Fibonacci function:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">n</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
  <span class="cm">/* If n is 1 or less, the loop runs zero times,  */</span>
  <span class="cm">/* since i &lt; n is false the first time.  */</span>
  <span class="p">{</span>
    <span class="cm">/* Now last is fib (i)
       and prev is fib (i - 1).  */</span>
    <span class="cm">/* Compute fib (i + 1).  */</span>
    <span class="kt">int</span> <span class="n">next</span> <span class="o">=</span> <span class="n">prev</span> <span class="o">+</span> <span class="n">last</span><span class="p">;</span>
    <span class="cm">/* Shift the values down.  */</span>
    <span class="n">prev</span> <span class="o">=</span> <span class="n">last</span><span class="p">;</span>
    <span class="n">last</span> <span class="o">=</span> <span class="n">next</span><span class="p">;</span>
    <span class="cm">/* Now last is fib (i + 1)
       and prev is fib (i).
       But that won’t stay true for long,
       because we are about to increment i.  */</span>
  <span class="p">}</span>
</code></pre></div></div>

<p>In this example, <code class="language-plaintext highlighter-rouge">start</code> is <code class="language-plaintext highlighter-rouge">i = 1</code>, meaning set <code class="language-plaintext highlighter-rouge">i</code> to 1.
<code class="language-plaintext highlighter-rouge">continue-test</code> is <code class="language-plaintext highlighter-rouge">i &lt; n</code>, meaning keep repeating the loop
as long as <code class="language-plaintext highlighter-rouge">i</code> is less than <code class="language-plaintext highlighter-rouge">n</code>. <code class="language-plaintext highlighter-rouge">advance</code> is <code class="language-plaintext highlighter-rouge">i++</code>, meaning
increment <code class="language-plaintext highlighter-rouge">i</code> by 1. The body is a block that contains a declaration and
two statements.</p>

<hr />
<h3 id="for-index-declarations">For Index Declarations</h3>

<p>You can declare loop-index variables directly in the <code class="language-plaintext highlighter-rouge">start</code>
portion of the <code class="language-plaintext highlighter-rouge">for</code>-loop, like this:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">n</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
  <span class="p">{</span>
    <span class="err">…</span>
  <span class="p">}</span>
</code></pre></div></div>

<p>This kind of <code class="language-plaintext highlighter-rouge">start</code> is limited to a single declaration; it
can declare one or more variables, separated by commas, all of which are
the same <code class="language-plaintext highlighter-rouge">basetype</code> (<code class="language-plaintext highlighter-rouge">int</code>, in this example):</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">n</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">,</span> <span class="o">++</span><span class="n">j</span><span class="p">,</span> <span class="o">++</span><span class="n">p</span><span class="p">)</span>
  <span class="p">{</span>
    <span class="err">…</span>
  <span class="p">}</span>
</code></pre></div></div>

<p>The scope of these variables is the <code class="language-plaintext highlighter-rouge">for</code> statement as a whole.
<code class="language-plaintext highlighter-rouge">basetype</code>.</p>

<p>Variables declared in <code class="language-plaintext highlighter-rouge">for</code> statements should have initializers.
Omitting the initialization gives the variables unpredictable initial
values, so this code is erroneous.</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">n</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
  <span class="p">{</span>
    <span class="err">…</span>
  <span class="p">}</span>
</code></pre></div></div>

<hr />

<h2 id="functions">Functions</h2>

<h3 id="function-definitions">Function Definitions</h3>

<p>We have already presented many examples of function definitions. To
summarize the rules, a function definition looks like this:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">returntype</span>
<span class="nf">functionname</span> <span class="p">(</span><span class="n">parm_declarations</span><span class="err">…</span><span class="p">)</span>
<span class="p">{</span>
  <span class="n">body</span>
<span class="p">}</span>
</code></pre></div></div>

<p>The part before the open-brace is called the <em>function header</em>.</p>

<p>Write <code class="language-plaintext highlighter-rouge">void</code> as the <code class="language-plaintext highlighter-rouge">returntype</code> if the function does not
return a value.</p>

<hr />

<h3 id="function-declarations">Function Declarations</h3>

<p>To call a function, or use its name as a pointer, a <em>function
declaration</em> for the function name must be in effect at that point in
the code. The function’s definition serves as a declaration of that
function for the rest of the containing scope, but to use the function
in code before the definition, or from another compilation module, a
separate function declaration must precede the use.</p>

<p>A function declaration looks like the start of a function definition. It
begins with the return value type (<code class="language-plaintext highlighter-rouge">void</code> if none) and the function
name, followed by argument declarations in parentheses (though these can
sometimes be omitted). But that’s as far as the similarity goes: instead
of the function body, the declaration uses a semicolon.</p>

<p>A declaration that specifies argument types is called a <em>function
prototype</em>. You can include the argument names or omit them. The names,
if included in the declaration, have no effect, but they may serve as
documentation.</p>

<p>This form of prototype specifies fixed argument types:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">rettype</span> <span class="nf">function</span> <span class="p">(</span><span class="n">argtypes</span><span class="err">…</span><span class="p">);</span>
</code></pre></div></div>

<p>This form says the function takes no arguments:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">rettype</span> <span class="nf">function</span> <span class="p">(</span><span class="kt">void</span><span class="p">);</span>
</code></pre></div></div>

<p>This form declares types for some arguments, and allows additional
arguments whose types are not specified:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">rettype</span> <span class="nf">function</span> <span class="p">(</span><span class="n">argtypes</span><span class="err">…</span><span class="p">,</span> <span class="p">...);</span>
</code></pre></div></div>

<p>For a parameter that’s an array of variable length, you can write its
declaration with ‘<code class="language-plaintext highlighter-rouge">*</code>’ where the “length” of the array would
normally go; for example, these are all equivalent.</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">double</span> <span class="nf">maximum</span> <span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">,</span> <span class="kt">int</span> <span class="n">m</span><span class="p">,</span> <span class="kt">double</span> <span class="n">a</span><span class="p">[</span><span class="n">n</span><span class="p">][</span><span class="n">m</span><span class="p">]);</span>
<span class="kt">double</span> <span class="nf">maximum</span> <span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">,</span> <span class="kt">int</span> <span class="n">m</span><span class="p">,</span> <span class="kt">double</span> <span class="n">a</span><span class="p">[</span><span class="o">*</span><span class="p">][</span><span class="o">*</span><span class="p">]);</span>
<span class="kt">double</span> <span class="nf">maximum</span> <span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">,</span> <span class="kt">int</span> <span class="n">m</span><span class="p">,</span> <span class="kt">double</span> <span class="n">a</span><span class="p">[</span> <span class="p">][</span><span class="o">*</span><span class="p">]);</span>
<span class="kt">double</span> <span class="nf">maximum</span> <span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">,</span> <span class="kt">int</span> <span class="n">m</span><span class="p">,</span> <span class="kt">double</span> <span class="n">a</span><span class="p">[</span> <span class="p">][</span><span class="n">m</span><span class="p">]);</span>
</code></pre></div></div>

<p>The old-fashioned form of declaration, which is not a prototype, says
nothing about the types of arguments or how many they should be:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">rettype</span> <span class="nf">function</span> <span class="p">();</span>
</code></pre></div></div>

<p><strong>Warning:</strong> Arguments passed to a function declared without a prototype
are converted with the default argument promotions . Likewise for additional arguments
whose types are unspecified.</p>

<p>Function declarations are usually written at the top level in a source
file, but you can also put them inside code blocks. Then the function
name is visible for the rest of the containing scope. For example:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span>
<span class="nf">foo</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="n">file_name</span><span class="p">)</span>
<span class="p">{</span>
  <span class="kt">void</span> <span class="n">save_file</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">);</span>
  <span class="n">save_file</span> <span class="p">(</span><span class="n">file_name</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div>

<p>If another part of the code tries to call the function <code class="language-plaintext highlighter-rouge">save_file</code>, this
declaration won’t be in effect there. So the function will get an
implicit declaration of the form <code class="language-plaintext highlighter-rouge">extern int save_file ();</code>. That
conflicts with the explicit declaration here, and the discrepancy
generates a warning.</p>

<p>The syntax of C traditionally allows omitting the data type in a
function declaration if it specifies a storage class or a qualifier.
Then the type defaults to <code class="language-plaintext highlighter-rouge">int</code>. For example:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">static</span> <span class="nf">foo</span> <span class="p">(</span><span class="kt">double</span> <span class="n">x</span><span class="p">);</span>
</code></pre></div></div>

<p>defaults the return type to <code class="language-plaintext highlighter-rouge">int</code>. This is bad practice; if you see it,
fix it.</p>

<p>Calling a function that is undeclared has the effect of an creating
<em>implicit</em> declaration in the innermost containing scope, equivalent to
this:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">extern</span> <span class="kt">int</span> <span class="nf">function</span> <span class="p">();</span>
</code></pre></div></div>

<p>This declaration says that the function returns <code class="language-plaintext highlighter-rouge">int</code> but leaves its
argument types unspecified. If that does not accurately fit the
function, then the program <strong>needs</strong> an explicit declaration of the
function with argument types in order to call it correctly.</p>

<p>Implicit declarations are deprecated, and a function call that creates
one causes a warning.</p>

<hr />

<h3 id="function-calls">Function Calls</h3>

<p>Starting a program automatically calls the function named <code class="language-plaintext highlighter-rouge">main</code> 
. Aside from that, a
function does nothing except when it is <em>called</em>. That occurs during the
execution of a function-call expression specifying that function.</p>

<p>A function-call expression looks like this:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">function</span> <span class="p">(</span><span class="n">arguments</span><span class="err">…</span><span class="p">)</span>
</code></pre></div></div>

<p>Most of the time, <code class="language-plaintext highlighter-rouge">function</code> is a function name. However, it
can also be an expression with a function pointer value; that way, the
program can determine at run time which function to call.</p>

<p>The <code class="language-plaintext highlighter-rouge">arguments</code> are a series of expressions separated by
commas. Each expression specifies one argument to pass to the function.</p>

<p>The list of arguments in a function call looks just like use of the
comma operator, but the fact
that it fills the parentheses of a function call gives it a different
meaning.</p>

<p>Here’s an example of a function call, taken from an example near the</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">printf</span> <span class="p">(</span><span class="s">"Fibonacci series item %d is %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
        <span class="mi">19</span><span class="p">,</span> <span class="n">fib</span> <span class="p">(</span><span class="mi">19</span><span class="p">));</span>
</code></pre></div></div>

<p>The three arguments given to <code class="language-plaintext highlighter-rouge">printf</code> are a constant string, the integer
19, and the integer returned by <code class="language-plaintext highlighter-rouge">fib (19)</code>.</p>

<hr />

<h3 id="function-call-semantics">Function Call Semantics</h3>

<p>The meaning of a function call is to compute the specified argument
expressions, convert their values according to the function’s
declaration, then run the function giving it copies of the converted
values. (This method of argument passing is known as <em>call-by-value</em>.)
When the function finishes, the value it returns becomes the value of
the function-call expression.</p>

<p>Call-by-value implies that an assignment to the function argument
variable has no direct effect on the caller. For instance,</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#include</span> <span class="cpf">&lt;stdlib.h&gt;</span><span class="c1">  /* Defines EXIT_SUCCESS. */</span><span class="cp">
#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="c1">   /* Declares printf. */</span><span class="cp">
</span>
<span class="kt">void</span>
<span class="nf">subroutine</span> <span class="p">(</span><span class="kt">int</span> <span class="n">x</span><span class="p">)</span>
<span class="p">{</span>
  <span class="n">x</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">}</span>

<span class="kt">void</span>
<span class="nf">main</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span>
<span class="p">{</span>
  <span class="kt">int</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
  <span class="n">subroutine</span> <span class="p">(</span><span class="n">y</span><span class="p">);</span>
  <span class="n">printf</span> <span class="p">(</span><span class="s">"y is %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">y</span><span class="p">);</span>
  <span class="k">return</span> <span class="n">EXIT_SUCCESS</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>prints ‘<code class="language-plaintext highlighter-rouge">y is 20</code>’. Calling <code class="language-plaintext highlighter-rouge">subroutine</code> initializes <code class="language-plaintext highlighter-rouge">x</code> from
the value of <code class="language-plaintext highlighter-rouge">y</code>, but this does not establish any other relationship
between the two variables. Thus, the assignment to <code class="language-plaintext highlighter-rouge">x</code>, inside
<code class="language-plaintext highlighter-rouge">subroutine</code>, changes only <em>that</em> <code class="language-plaintext highlighter-rouge">x</code>.</p>

<p>If an argument’s type is specified by the function’s declaration, the
function call converts the argument expression to that type if possible.
If the conversion is impossible, that is an error.</p>

<h2 id="mini-project">Mini Project</h2>
<h3 id="bank-employee-management-project">Bank Employee Management Project</h3>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>


<span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="cp">
#include</span> <span class="cpf">&lt;stdlib.h&gt;</span><span class="cp">
</span>
<span class="k">struct</span> <span class="n">employee</span>
<span class="p">{</span>
    <span class="kt">int</span> <span class="n">emp_id</span><span class="p">;</span>
    <span class="kt">char</span> <span class="n">name</span><span class="p">[</span><span class="mi">30</span><span class="p">];</span>
    <span class="kt">char</span> <span class="n">dep</span><span class="p">[</span><span class="mi">10</span><span class="p">];</span>
    <span class="kt">char</span> <span class="n">gender</span><span class="p">;</span>
    <span class="kt">char</span> <span class="n">phone_num</span><span class="p">[</span><span class="mi">15</span><span class="p">];</span>
    <span class="kt">char</span> <span class="n">dob</span><span class="p">[</span><span class="mi">15</span><span class="p">];</span>
    <span class="kt">char</span> <span class="n">join_date</span><span class="p">[</span><span class="mi">10</span><span class="p">];</span>
    <span class="kt">int</span> <span class="n">age</span><span class="p">;</span>
    <span class="kt">float</span> <span class="n">salary</span><span class="p">;</span>
    <span class="kt">char</span> <span class="n">address</span><span class="p">[</span><span class="mi">500</span><span class="p">];</span>
<span class="p">};</span>

<span class="k">typedef</span> <span class="k">struct</span> <span class="n">employee</span> <span class="n">Emp</span><span class="p">;</span>

<span class="kt">void</span> <span class="nf">Insert</span><span class="p">();</span>
<span class="kt">void</span> <span class="nf">Display</span><span class="p">();</span>
<span class="kt">void</span> <span class="nf">Search</span><span class="p">();</span>
<span class="kt">void</span> <span class="nf">Update</span><span class="p">();</span>
<span class="kt">void</span> <span class="nf">Delete</span><span class="p">();</span>
<span class="kt">void</span> <span class="nf">main_menu</span><span class="p">();</span>
<span class="kt">void</span> <span class="nf">login</span><span class="p">();</span>
<span class="kt">void</span> <span class="nf">end</span><span class="p">();</span>

<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
    <span class="n">login</span><span class="p">();</span>
    <span class="n">main_menu</span><span class="p">();</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">login</span><span class="p">()</span>
<span class="p">{</span>
    <span class="kt">int</span> <span class="n">a</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
    <span class="kt">char</span> <span class="n">uname</span><span class="p">[</span><span class="mi">10</span><span class="p">],</span> <span class="n">c</span> <span class="o">=</span> <span class="sc">' '</span><span class="p">;</span>
    <span class="kt">char</span> <span class="n">pword</span><span class="p">[</span><span class="mi">10</span><span class="p">],</span> <span class="n">code</span><span class="p">[</span><span class="mi">10</span><span class="p">];</span>
    <span class="kt">char</span> <span class="n">user</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="s">"user"</span><span class="p">;</span>
    <span class="kt">char</span> <span class="n">pass</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="s">"pass"</span><span class="p">;</span>
    <span class="k">do</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">__________________________________________________________________________________________________________</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s"> ::::::::::::::::::::::::::::::::::::::::::::::::  LOGIN  :::::::::::::::::::::::::::::::::::::::::::::::</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">" </span><span class="se">\n</span><span class="s">                                            ENTER USERNAME : "</span><span class="p">);</span>
        <span class="n">scanf</span><span class="p">(</span><span class="s">"%s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">uname</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">" </span><span class="se">\n</span><span class="s">                                            ENTER PASSWORD : "</span><span class="p">);</span>
        <span class="k">while</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="mi">10</span><span class="p">)</span>
        <span class="p">{</span>
            <span class="n">pword</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">getch</span><span class="p">();</span>
            <span class="n">c</span> <span class="o">=</span> <span class="n">pword</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
            <span class="k">if</span> <span class="p">(</span><span class="n">c</span> <span class="o">==</span> <span class="mi">13</span><span class="p">)</span>
                <span class="k">break</span><span class="p">;</span>
            <span class="k">else</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"*"</span><span class="p">);</span>
            <span class="n">i</span><span class="o">++</span><span class="p">;</span>
        <span class="p">}</span>
        <span class="n">pword</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="sc">'\0'</span><span class="p">;</span>
        <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>

        <span class="k">if</span> <span class="p">(</span><span class="n">strcmp</span><span class="p">(</span><span class="n">uname</span><span class="p">,</span> <span class="s">"user"</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">pword</span><span class="p">,</span> <span class="s">"pass"</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
        <span class="p">{</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">__________________________________________________________________________________________________________</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  WELCOME TO TRIDENT BANK EMPLOYEE MANAGEMENT SYSTEM  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"</span><span class="p">);</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">__________________________________________________________________________________________________________</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">C-Language Project</span><span class="se">\n</span><span class="s">Group Members: </span><span class="se">\n\n</span><span class="s">1.Lalit Chaudhary (AP21110010424)</span><span class="se">\n</span><span class="s">2.Bhavana Sree Vemuri (AP21110010425)</span><span class="se">\n</span><span class="s">3.Venkata Krishna Saadhvik Muddana (AP2111001042)</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s"> LOADING PLEASE WAIT... </span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">5</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
            <span class="p">{</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"."</span><span class="p">);</span>
                <span class="n">Sleep</span><span class="p">(</span><span class="mi">500</span><span class="p">);</span>
            <span class="p">}</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n\n</span><span class="s">                                       Press any key to continue...</span><span class="se">\n\n</span><span class="s">"</span><span class="p">);</span>
            <span class="n">getch</span><span class="p">();</span>
            <span class="k">break</span><span class="p">;</span>
        <span class="p">}</span>
        <span class="k">else</span>
        <span class="p">{</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">SORRY !!!!  LOGIN IS UNSUCESSFUL"</span><span class="p">);</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Incorrect Credentials !!!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="n">a</span><span class="o">++</span><span class="p">;</span>
        <span class="p">}</span>
    <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">a</span> <span class="o">&lt;=</span> <span class="mi">3</span><span class="p">);</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">a</span> <span class="o">&gt;</span> <span class="mi">3</span><span class="p">)</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Sorry you have entered the wrong username and password 4 times !!!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"Your Session has been terminated due to attempted incorrect logins !!!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">end</span><span class="p">();</span>
    <span class="p">}</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">main_menu</span><span class="p">()</span>
<span class="p">{</span>

    <span class="kt">int</span> <span class="n">ch</span><span class="p">;</span>
    <span class="k">do</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"~~~~~~  Main Menu  ~~~~~~</span><span class="se">\n\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">1. Add New Employee Record</span><span class="se">\n\n</span><span class="s">2. Display All Records</span><span class="se">\n\n</span><span class="s">3. Search Specific Employee Record</span><span class="se">\n\n</span><span class="s">4. Update Employee Record</span><span class="se">\n\n</span><span class="s">5. Delete Employee Record</span><span class="se">\n\n</span><span class="s">6. Exit The Program </span><span class="se">\n\n\n</span><span class="s">Enter your Choice : "</span><span class="p">);</span>
        <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">ch</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n\n</span><span class="s">"</span><span class="p">);</span>

        <span class="k">switch</span> <span class="p">(</span><span class="n">ch</span><span class="p">)</span>
        <span class="p">{</span>
        <span class="k">case</span> <span class="mi">1</span><span class="p">:</span>
            <span class="n">Insert</span><span class="p">();</span>
            <span class="k">break</span><span class="p">;</span>
        <span class="k">case</span> <span class="mi">2</span><span class="p">:</span>
            <span class="n">Display</span><span class="p">();</span>
            <span class="k">break</span><span class="p">;</span>
        <span class="k">case</span> <span class="mi">3</span><span class="p">:</span>
            <span class="n">Search</span><span class="p">();</span>
            <span class="k">break</span><span class="p">;</span>
        <span class="k">case</span> <span class="mi">4</span><span class="p">:</span>
            <span class="n">Update</span><span class="p">();</span>
            <span class="k">break</span><span class="p">;</span>
        <span class="k">case</span> <span class="mi">5</span><span class="p">:</span>
            <span class="n">Delete</span><span class="p">();</span>
            <span class="k">break</span><span class="p">;</span>
        <span class="k">case</span> <span class="mi">6</span><span class="p">:</span>
            <span class="n">end</span><span class="p">();</span>
        <span class="nl">default:</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Incorrect Choice !!!</span><span class="se">\n</span><span class="s">Try Again...!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="p">}</span>
    <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">ch</span> <span class="o">!=</span> <span class="mi">6</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">Insert</span><span class="p">()</span>
<span class="p">{</span>
    <span class="kt">FILE</span> <span class="o">*</span><span class="n">fp</span><span class="p">;</span>
    <span class="n">fp</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"emp.txt"</span><span class="p">,</span> <span class="s">"a+"</span><span class="p">);</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">fp</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Unable to access file........Try Again....!!"</span><span class="p">);</span>
    <span class="p">}</span>
    <span class="k">else</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">_______________________________________________</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">~~~~~~~~~~~ INSERT EMPLOYEE RECORDS ~~~~~~~~~~~</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">_______________________________________________</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="kt">int</span> <span class="n">n</span><span class="p">,</span> <span class="n">a</span><span class="p">;</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter the number of Records you want to insert : "</span><span class="p">);</span>
        <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">n</span><span class="p">);</span>
        <span class="n">Emp</span> <span class="o">*</span><span class="n">e</span><span class="p">;</span>
        <span class="n">e</span> <span class="o">=</span> <span class="p">(</span><span class="n">Emp</span> <span class="o">*</span><span class="p">)</span><span class="n">calloc</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">));</span>

        <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">n</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
        <span class="p">{</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">~~~~~~~~~~~~~~~~~~ EMPLOYEE - %d ~~~~~~~~~~~~~~~~~~</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>

            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee ID : "</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">emp_id</span><span class="p">);</span>

            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Full Name of Employee : "</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"%[^</span><span class="se">\n</span><span class="s">]s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span><span class="p">);</span>

            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Department of Employee : "</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"%[^</span><span class="se">\n</span><span class="s">]s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">dep</span><span class="p">);</span>

            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Age : "</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">a</span><span class="p">);</span>
            <span class="k">if</span> <span class="p">(</span><span class="n">a</span> <span class="o">&lt;</span> <span class="mi">18</span><span class="p">)</span>
            <span class="p">{</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">Under Age for job !!!</span><span class="se">\n</span><span class="s">Give Age above 18</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Age : "</span><span class="p">);</span>
                <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">age</span><span class="p">);</span>
            <span class="p">}</span>

            <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">a</span> <span class="o">&gt;</span> <span class="mi">60</span><span class="p">)</span>
            <span class="p">{</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">Over Aged for job !!!</span><span class="se">\n</span><span class="s">Give age below 60</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Age : "</span><span class="p">);</span>
                <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">age</span><span class="p">);</span>
            <span class="p">}</span>

            <span class="k">else</span>
            <span class="p">{</span>
                <span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">age</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
            <span class="p">}</span>

            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Salary : "</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"%f"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">salary</span><span class="p">);</span>

            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Gender : "</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"%s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">gender</span><span class="p">);</span>

            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Phone Number : "</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"%s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">phone_num</span><span class="p">);</span>

            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee DOB : "</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="n">gets</span><span class="p">(</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">dob</span><span class="p">);</span>

            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee joining date : "</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="n">gets</span><span class="p">(</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">join_date</span><span class="p">);</span>

            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Address : "</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="n">scanf</span><span class="p">(</span><span class="s">"%[^</span><span class="se">\n</span><span class="s">]s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">address</span><span class="p">);</span>

            <span class="n">fwrite</span><span class="p">(</span><span class="n">e</span> <span class="o">+</span> <span class="n">i</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp</span><span class="p">);</span>
        <span class="p">}</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">~~~~~~~~~~~ RECORD INSERTED SUCCESFULLY ~~~~~~~~~~~</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
    <span class="p">}</span>
    <span class="n">fclose</span><span class="p">(</span><span class="n">fp</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">Display</span><span class="p">()</span>
<span class="p">{</span>
    <span class="kt">FILE</span> <span class="o">*</span><span class="n">fp</span><span class="p">;</span>
    <span class="n">fp</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"emp.txt"</span><span class="p">,</span> <span class="s">"r"</span><span class="p">);</span>
    <span class="n">Emp</span> <span class="n">e</span><span class="p">;</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">fp</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Unable to access file ........Try Again........ !!"</span><span class="p">);</span>
    <span class="p">}</span>

    <span class="k">else</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">_______________________________________________________</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">~~~~~~~~~~~ DISPLAY ALL EMPLOYEE RECORD ~~~~~~~~~~~</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">_______________________________________________________</span><span class="se">\n\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">_______________________________________________________________________________________________________________________________________________________________________________________________"</span><span class="p">);</span>
        <span class="kt">char</span> <span class="o">*</span><span class="n">h</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span><span class="s">"ID"</span><span class="p">,</span> <span class="s">"NAME"</span><span class="p">,</span> <span class="s">"GENDER"</span><span class="p">,</span> <span class="s">"DOB"</span><span class="p">,</span> <span class="s">"DEPARTMENT"</span><span class="p">,</span> <span class="s">"JOIN DATE"</span><span class="p">,</span> <span class="s">"AGE"</span><span class="p">,</span> <span class="s">"SALARY"</span><span class="p">,</span> <span class="s">"PHONE NUMBER"</span><span class="p">,</span> <span class="s">"ADDRESS"</span><span class="p">};</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n\t</span><span class="s">%-5s %-30s %-8s %-15s %-20s %-10s %-8s %-25s %-20s %-30s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">h</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">h</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">h</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">h</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">h</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span> <span class="n">h</span><span class="p">[</span><span class="mi">5</span><span class="p">],</span> <span class="n">h</span><span class="p">[</span><span class="mi">6</span><span class="p">],</span> <span class="n">h</span><span class="p">[</span><span class="mi">7</span><span class="p">],</span> <span class="n">h</span><span class="p">[</span><span class="mi">8</span><span class="p">],</span> <span class="n">h</span><span class="p">[</span><span class="mi">9</span><span class="p">]);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"_______________________________________________________________________________________________________________________________________________________________________________________________</span><span class="se">\n\n</span><span class="s">"</span><span class="p">);</span>
        <span class="k">while</span> <span class="p">(</span><span class="n">fread</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp</span><span class="p">))</span>
        <span class="p">{</span>
            <span class="cm">/*printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                printf("\n\n\n\tID \t: %d \n\n",e.emp_id);
                printf("\tNAME \t: %s \n\n",e.name);
                printf("\tGENDER \t: %c \n\n",e.gender);
                printf("\tDOB \t: %s \n\n",e.dob);
                printf("\tPHONE NUMBER \t: %d \n\n",e.phone_num);
                printf("\tAGE \t: %d \n\n",e.age);
                printf("\tJOIN DATE \t: %s \n\n",e.join_date);
                printf("\tDEPARTMENT \t: %s \n\n",e.dep);
                printf("\tSALARY \t: %0.2f \n\n",e.salary);
                printf("\tADDRESS \t: %s \n\n\n\n",e.address);
                printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");*/</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\t</span><span class="s">%-5d %-30s %-8c %-15s %-20s %-10s %-8d %-25.2f %-20s %-30s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">emp_id</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">name</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">gender</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">dob</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">dep</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">join_date</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">age</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">salary</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">phone_num</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">address</span><span class="p">);</span>
        <span class="p">}</span>
    <span class="p">}</span>
    <span class="n">fclose</span><span class="p">(</span><span class="n">fp</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">Search</span><span class="p">()</span>
<span class="p">{</span>
    <span class="kt">FILE</span> <span class="o">*</span><span class="n">fp</span><span class="p">;</span>
    <span class="n">fp</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"emp.txt"</span><span class="p">,</span> <span class="s">"r"</span><span class="p">);</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">fp</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Unable to access file ........Try Again........ !!"</span><span class="p">);</span>
    <span class="p">}</span>
    <span class="k">else</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">_______________________________________________________</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">~~~~~~~~~~~ DISPLAY SEPECIFIC EMPLOYEE RECORD ~~~~~~~~~~~</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">_______________________________________________________</span><span class="se">\n\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">Emp</span> <span class="n">e</span><span class="p">;</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter the Employee ID you want to search : "</span><span class="p">);</span>
        <span class="kt">int</span> <span class="n">ID</span><span class="p">,</span> <span class="n">found</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
        <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">ID</span><span class="p">);</span>

        <span class="k">while</span> <span class="p">(</span><span class="n">fread</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp</span><span class="p">))</span>
        <span class="p">{</span>
            <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="p">.</span><span class="n">emp_id</span> <span class="o">==</span> <span class="n">ID</span><span class="p">)</span>
            <span class="p">{</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Employee Record is Found !!!!!!!!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\t</span><span class="s">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n\n\t</span><span class="s">ID </span><span class="se">\t</span><span class="s">: %d </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">emp_id</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">NAME </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">name</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">GENDER </span><span class="se">\t</span><span class="s">: %c </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">gender</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">DOB </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">dob</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">PHONE NUMBER </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">phone_num</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">AGE </span><span class="se">\t</span><span class="s">: %d </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">age</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">JOIN DATE </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">join_date</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">DEPARTMENT </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">dep</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">SALARY </span><span class="se">\t</span><span class="s">: %0.2f </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">salary</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">ADDRESS </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">address</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\t</span><span class="s">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"</span><span class="p">);</span>
                <span class="n">found</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
                <span class="k">break</span><span class="p">;</span>
            <span class="p">}</span>
        <span class="p">}</span>
        <span class="k">if</span> <span class="p">(</span><span class="n">found</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
        <span class="p">{</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Employee Record not found ........Try Again........ !!"</span><span class="p">);</span>
        <span class="p">}</span>
    <span class="p">}</span>
    <span class="n">fclose</span><span class="p">(</span><span class="n">fp</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">Update</span><span class="p">()</span>
<span class="p">{</span>
    <span class="kt">FILE</span> <span class="o">*</span><span class="n">fp</span><span class="p">,</span> <span class="o">*</span><span class="n">fp1</span><span class="p">;</span>

    <span class="k">if</span> <span class="p">(</span><span class="n">fp</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Unable to access file ........Try Again........ !!"</span><span class="p">);</span>
    <span class="p">}</span>
    <span class="k">else</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">_______________________________________________________</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">~~~~~~~~~~~ UPDATE EMPLOYEE RECORD ~~~~~~~~~~~</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">_______________________________________________________</span><span class="se">\n\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">fp</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"emp.txt"</span><span class="p">,</span> <span class="s">"r"</span><span class="p">);</span>
        <span class="n">fp1</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"temp.txt"</span><span class="p">,</span> <span class="s">"w"</span><span class="p">);</span>
        <span class="n">Emp</span> <span class="n">e</span><span class="p">;</span>
        <span class="kt">int</span> <span class="n">ch</span><span class="p">;</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter the Employee ID you want to Update : "</span><span class="p">);</span>
        <span class="kt">int</span> <span class="n">ID</span><span class="p">,</span> <span class="n">found</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
        <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">ID</span><span class="p">);</span>

        <span class="k">while</span> <span class="p">(</span><span class="n">fread</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp</span><span class="p">))</span>
        <span class="p">{</span>
            <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="p">.</span><span class="n">emp_id</span> <span class="o">==</span> <span class="n">ID</span><span class="p">)</span>
            <span class="p">{</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">Current Details Available for this Employee ID -  %d : </span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">ID</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">Employee Record is Found !!!!!!!!</span><span class="se">\n\n\n</span><span class="s">"</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\t</span><span class="s">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n\n\t</span><span class="s">ID </span><span class="se">\t</span><span class="s">: %d </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">emp_id</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">NAME </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">name</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">GENDER </span><span class="se">\t</span><span class="s">: %c </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">gender</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">DOB </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">dob</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">PHONE NUMBER </span><span class="se">\t</span><span class="s">: %d </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">phone_num</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">AGE </span><span class="se">\t</span><span class="s">: %d </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">age</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">JOIN DATE </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">join_date</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">DEPARTMENT </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">dep</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">SALARY </span><span class="se">\t</span><span class="s">: %0.2f </span><span class="se">\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">salary</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">ADDRESS </span><span class="se">\t</span><span class="s">: %s </span><span class="se">\n\n\n\n</span><span class="s">"</span><span class="p">,</span> <span class="n">e</span><span class="p">.</span><span class="n">address</span><span class="p">);</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\t</span><span class="s">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"</span><span class="p">);</span>
                <span class="n">found</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>

                <span class="k">do</span>
                <span class="p">{</span>
                    <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">________________________________</span><span class="se">\n\n\n</span><span class="s">"</span><span class="p">);</span>
                    <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">What would you like to update : </span><span class="se">\n\n\n</span><span class="s">1. Name</span><span class="se">\n\n</span><span class="s">2. Department</span><span class="se">\n\n</span><span class="s">3. Age</span><span class="se">\n\n</span><span class="s">4. Salary</span><span class="se">\n\n</span><span class="s">5. Phone Number</span><span class="se">\n\n</span><span class="s">6. Address</span><span class="se">\n\n</span><span class="s">7.All Information !</span><span class="se">\n\n</span><span class="s">8.Exit</span><span class="se">\n\n\n</span><span class="s">Enter Your Choice : "</span><span class="p">);</span>
                    <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">ch</span><span class="p">);</span>
                    <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n\n</span><span class="s">"</span><span class="p">);</span>
                    <span class="k">switch</span> <span class="p">(</span><span class="n">ch</span><span class="p">)</span>
                    <span class="p">{</span>
                    <span class="k">case</span> <span class="mi">1</span><span class="p">:</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Full Name of Employee : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                        <span class="n">gets</span><span class="p">(</span><span class="n">e</span><span class="p">.</span><span class="n">name</span><span class="p">);</span>
                        <span class="k">break</span><span class="p">;</span>

                    <span class="k">case</span> <span class="mi">2</span><span class="p">:</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Department of Employee : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">dep</span><span class="p">);</span>
                        <span class="k">break</span><span class="p">;</span>

                    <span class="k">case</span> <span class="mi">3</span><span class="p">:</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Age : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">age</span><span class="p">);</span>
                        <span class="k">break</span><span class="p">;</span>

                    <span class="k">case</span> <span class="mi">4</span><span class="p">:</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Salary : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%f"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">salary</span><span class="p">);</span>
                        <span class="k">break</span><span class="p">;</span>

                    <span class="k">case</span> <span class="mi">5</span><span class="p">:</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Phone Number : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">phone_num</span><span class="p">);</span>
                        <span class="k">break</span><span class="p">;</span>

                    <span class="k">case</span> <span class="mi">6</span><span class="p">:</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Address : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                        <span class="n">gets</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">address</span><span class="p">);</span>
                        <span class="k">break</span><span class="p">;</span>

                    <span class="k">case</span> <span class="mi">7</span><span class="p">:</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee ID : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">emp_id</span><span class="p">);</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Full Name of Employee : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                        <span class="n">gets</span><span class="p">(</span><span class="n">e</span><span class="p">.</span><span class="n">name</span><span class="p">);</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Department of Employee : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">dep</span><span class="p">);</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Age : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">age</span><span class="p">);</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Salary : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%f"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">salary</span><span class="p">);</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Gender : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">gender</span><span class="p">);</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Phone Number : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%s"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">phone_num</span><span class="p">);</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee DOB : "</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                        <span class="n">gets</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">dob</span><span class="p">);</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee joining date : "</span><span class="p">);</span>
                        <span class="n">gets</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">join_date</span><span class="p">);</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter Employee Address : "</span><span class="p">);</span>
                        <span class="n">gets</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">.</span><span class="n">address</span><span class="p">);</span>
                        <span class="k">break</span><span class="p">;</span>

                    <span class="k">case</span> <span class="mi">8</span><span class="p">:</span>
                        <span class="k">break</span><span class="p">;</span>

                    <span class="nl">default:</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Incorrect Choice............Try Again....!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                        <span class="k">break</span><span class="p">;</span>
                    <span class="p">}</span>
                    <span class="k">if</span> <span class="p">(</span><span class="n">ch</span> <span class="o">!=</span> <span class="mi">8</span><span class="p">)</span>
                    <span class="p">{</span>
                        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Would You like to do some more updations with this record...{Y/N) : "</span><span class="p">);</span>
                        <span class="kt">char</span> <span class="n">c</span><span class="p">;</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
                        <span class="n">scanf</span><span class="p">(</span><span class="s">"%c"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">);</span>
                        <span class="k">if</span> <span class="p">(</span><span class="n">c</span> <span class="o">==</span> <span class="sc">'y'</span> <span class="o">||</span> <span class="n">c</span> <span class="o">==</span> <span class="sc">'Y'</span><span class="p">)</span>
                        <span class="p">{</span>
                            <span class="k">continue</span><span class="p">;</span>
                        <span class="p">}</span>
                        <span class="k">else</span>
                        <span class="p">{</span>
                            <span class="k">break</span><span class="p">;</span>
                        <span class="p">}</span>
                    <span class="p">}</span>

                <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">ch</span> <span class="o">!=</span> <span class="mi">8</span><span class="p">);</span>
            <span class="p">}</span>
            <span class="n">fwrite</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp1</span><span class="p">);</span>
        <span class="p">}</span>
        <span class="n">fclose</span><span class="p">(</span><span class="n">fp</span><span class="p">);</span>
        <span class="n">fclose</span><span class="p">(</span><span class="n">fp1</span><span class="p">);</span>

        <span class="k">if</span> <span class="p">(</span><span class="n">found</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
        <span class="p">{</span>
            <span class="n">fp</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"emp.txt"</span><span class="p">,</span> <span class="s">"w+"</span><span class="p">);</span>
            <span class="n">fp1</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"temp.txt"</span><span class="p">,</span> <span class="s">"r+"</span><span class="p">);</span>
            <span class="k">while</span> <span class="p">(</span><span class="n">fread</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp1</span><span class="p">))</span>
            <span class="p">{</span>
                <span class="n">fwrite</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp</span><span class="p">);</span>
            <span class="p">}</span>
            <span class="n">fclose</span><span class="p">(</span><span class="n">fp</span><span class="p">);</span>
            <span class="n">fclose</span><span class="p">(</span><span class="n">fp1</span><span class="p">);</span>
            <span class="k">if</span> <span class="p">(</span><span class="n">ch</span> <span class="o">!=</span> <span class="mi">8</span><span class="p">)</span>
            <span class="p">{</span>
                <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Record Updated Successfully..........!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
            <span class="p">}</span>
        <span class="p">}</span>
        <span class="k">else</span>
        <span class="p">{</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">The Eployee ID is not found........Try Again.........!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="p">}</span>
    <span class="p">}</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">Delete</span><span class="p">()</span>
<span class="p">{</span>
    <span class="kt">FILE</span> <span class="o">*</span><span class="n">fp</span><span class="p">,</span> <span class="o">*</span><span class="n">fp1</span><span class="p">;</span>

    <span class="k">if</span> <span class="p">(</span><span class="n">fp</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Unable to access file........Try Again....!!"</span><span class="p">);</span>
    <span class="p">}</span>
    <span class="k">else</span>
    <span class="p">{</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">_______________________________________________________</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">~~~~~~~~~~~ DELETE EMPLOYEE RECORD ~~~~~~~~~~~</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">_______________________________________________________</span><span class="se">\n\n</span><span class="s">"</span><span class="p">);</span>
        <span class="n">fp</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"emp.txt"</span><span class="p">,</span> <span class="s">"r"</span><span class="p">);</span>
        <span class="n">fp1</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"temp.txt"</span><span class="p">,</span> <span class="s">"w"</span><span class="p">);</span>
        <span class="n">Emp</span> <span class="n">e</span><span class="p">;</span>
        <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Enter the Employee ID you want to Delete : "</span><span class="p">);</span>
        <span class="kt">int</span> <span class="n">ID</span><span class="p">,</span> <span class="n">found</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
        <span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">ID</span><span class="p">);</span>

        <span class="k">while</span> <span class="p">(</span><span class="n">fread</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp</span><span class="p">))</span>
        <span class="p">{</span>
            <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="p">.</span><span class="n">emp_id</span> <span class="o">==</span> <span class="n">ID</span><span class="p">)</span>
            <span class="p">{</span>
                <span class="n">found</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
            <span class="p">}</span>
            <span class="k">else</span>
            <span class="p">{</span>
                <span class="n">fwrite</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp1</span><span class="p">);</span>
            <span class="p">}</span>
        <span class="p">}</span>
        <span class="n">fclose</span><span class="p">(</span><span class="n">fp</span><span class="p">);</span>
        <span class="n">fclose</span><span class="p">(</span><span class="n">fp1</span><span class="p">);</span>

        <span class="k">if</span> <span class="p">(</span><span class="n">found</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
        <span class="p">{</span>
            <span class="n">fp</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"emp.txt"</span><span class="p">,</span> <span class="s">"w+"</span><span class="p">);</span>
            <span class="n">fp1</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">"temp.txt"</span><span class="p">,</span> <span class="s">"r+"</span><span class="p">);</span>
            <span class="k">while</span> <span class="p">(</span><span class="n">fread</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp1</span><span class="p">))</span>
            <span class="p">{</span>
                <span class="n">fwrite</span><span class="p">(</span><span class="o">&amp;</span><span class="n">e</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Emp</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">fp</span><span class="p">);</span>
            <span class="p">}</span>
            <span class="n">fclose</span><span class="p">(</span><span class="n">fp</span><span class="p">);</span>
            <span class="n">fclose</span><span class="p">(</span><span class="n">fp1</span><span class="p">);</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Record Deleted Successfully..........!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="p">}</span>
        <span class="k">else</span>
        <span class="p">{</span>
            <span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">The Eployee ID is not found........Try Again.........!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
        <span class="p">}</span>
    <span class="p">}</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">end</span><span class="p">()</span>
<span class="p">{</span>
    <span class="n">printf</span><span class="p">(</span><span class="s">"Thanks for using our program !!!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
    <span class="n">printf</span><span class="p">(</span><span class="s">"Have a great day !!!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
    <span class="n">exit</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div>]]></content><author><name>Imad Najam</name></author><category term="Tutorial" /><category term="C" /><summary type="html"><![CDATA[Five days through the fundamentals of C: variables, input and output, every loop form, functions, and a mini project to tie it together.]]></summary></entry><entry><title type="html">Git &amp;amp; Best Practices</title><link href="https://n-i.vercel.app/blog/git-and-best-practices/" rel="alternate" type="text/html" title="Git &amp;amp; Best Practices" /><published>2024-07-09T00:00:00+00:00</published><updated>2024-07-09T00:00:00+00:00</updated><id>https://n-i.vercel.app/blog/git-and-best-practices</id><content type="html" xml:base="https://n-i.vercel.app/blog/git-and-best-practices/"><![CDATA[<p>Git is a powerful distributed version control system created by Linus Torvalds in 2005. It allows developers to track changes in their code, collaborate with others, and manage their project’s history efficiently. Unlike traditional version control systems, Git’s distributed nature means every developer has a full copy of the repository, including its history, on their local machine. This ensures high availability and robustness, even in scenarios where the central server is unavailable</p>

<hr />

<h2 id="jump-to-section">Jump to Section</h2>

<ul>
  <li><a href="#motivation">Motivation</a></li>
  <li><a href="#git-basics">Git Basics</a>
    <ul>
      <li><a href="#initializing-a-new-repository">Initializing a New Repository</a></li>
      <li><a href="#staging-files">Staging Files</a></li>
      <li><a href="#commits">Commits</a></li>
      <li><a href="#github--pushing">GitHub &amp; Pushing</a></li>
      <li><a href="#branches">Branches</a></li>
    </ul>
  </li>
  <li><a href="#github-features">GitHub Features</a>
    <ul>
      <li><a href="#pull-requests">Pull Requests</a></li>
      <li><a href="#issues">Issues</a></li>
      <li><a href="#projects">Projects</a></li>
    </ul>
  </li>
  <li><a href="#best-practices">Best Practices</a>
    <ul>
      <li><a href="#branching">Branching</a></li>
      <li><a href="#issues">Issues</a></li>
      <li><a href="#projects">Projects</a></li>
    </ul>
  </li>
  <li><a href="#sources--further-reading">Sources &amp; Further Reading</a></li>
</ul>

<h2 id="motivation">Motivation</h2>

<p>The purpose of a version control system (VCS), like Git, is <strong>to allow software teams track changes to the code, while enhancing communication and collaboration between team members</strong>. Version control facilitates a continuous, simple way to develop software.</p>

<p>Git is free and open source software for distributed version control: tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development.</p>

<p>Think of Google Drive’s collaboration history, except its much more detailed and gives you far more control.</p>

<h2 id="git-basics">Git Basics</h2>

<p>We use git because it is a powerful tool that allows us to:</p>

<ul>
  <li>Track changes to our code</li>
  <li>Collaborate with others</li>
  <li>Create backups of our code</li>
  <li>Create branches to work on new features and bug fixes</li>
  <li>Create pull requests to merge our branches into the main branch</li>
</ul>

<p>Git can prevent situations where you have to rewrite your code because you forgot to save a file, or you accidentally deleted a file. Git also allows you to work on multiple features at the same time, and merge them into the main branch when they are ready.</p>

<h3 id="initializing-a-new-repository">Initializing a New Repository</h3>

<p>The first steps to using Git after installing are to initialize a repository and and staging files. <code class="language-plaintext highlighter-rouge">git init</code> is a one-time command you use during the initial setup of a new repo. It will create a new .git subdirectory in your current working directory. This will also create a new main branch.</p>

<h3 id="staging-files">Staging Files</h3>

<p>Staged files are files that are ready to be committed to the repository you are working on. You will learn more about commit shortly. To stage a file:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git add <span class="o">[</span>filename]
</code></pre></div></div>

<p>or to stage all changed/new files:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git add <span class="k">*</span>
</code></pre></div></div>

<h3 id="tracking">Tracking</h3>

<p>Each file in your working directory can be in one of two states:</p>

<ul>
  <li>tracked</li>
  <li>untracked</li>
</ul>

<p>Tracked files are files that were in the last snapshot, as well as any newly staged files; they can be <code class="language-plaintext highlighter-rouge">unmodified</code>, <code class="language-plaintext highlighter-rouge">modified</code>, or <code class="language-plaintext highlighter-rouge">staged</code>. In short, tracked files are files that Git knows about. Untracked files are everything else.</p>

<p>To see which files are tracked and which are untracked, use the <code class="language-plaintext highlighter-rouge">git status</code> command.</p>

<h3 id="commits">Commits</h3>

<p>A <code class="language-plaintext highlighter-rouge">commit</code> is essentially a “save point” in your git version history. It is a point in the project you can go back to if you find a bug, or want to make a change.</p>

<p>When we <code class="language-plaintext highlighter-rouge">commit</code>, we should <strong>always</strong> include a <strong>descriptive  commit message</strong> including details on what was changed.</p>

<p>Commit with:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git commit <span class="nt">-m</span> <span class="s2">"commit message"</span>
</code></pre></div></div>

<h3 id="branches">Branches</h3>

<p>A <code class="language-plaintext highlighter-rouge">branch</code> is a new/separate version of the main repository. More technically, they are effectivly a pointer to a snapshot of your changes.</p>

<p>When you want to add a new feature or fix a bug, no matter how big or how small, you spawn a new branch to encapsulate your changes. This makes it harder for unstable code to get merged into the main code base, and it gives you the chance to clean up your future’s history before merging it into the main branch.</p>

<p>To list all branches and see which branch you are on:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git branch
</code></pre></div></div>

<p>To create a branch:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git branch <span class="o">[</span>new branch name]
</code></pre></div></div>

<blockquote>
  <p>Note: Your new branch’s source will come from whichever branch you are currently on</p>
</blockquote>

<p>To switch branches (or <code class="language-plaintext highlighter-rouge">checkout</code> a branch):</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git checkout <span class="o">[</span>existing branch name]
</code></pre></div></div>

<p>To delete a branch:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git branch -d <span class="o">[</span>branch name]
</code></pre></div></div>

<h2 id="github-features">GitHub Features</h2>

<p>Now that you have learned the basics of Git, let’s take a look at how GitHub will help with collaboration.</p>

<h3 id="github--pushing">GitHub &amp; Pushing</h3>

<p>We will now discuss the role of <em>hosted</em> version control systems (VCS) like GitHub. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuous integration, and wikis for every project.</p>

<p>After committing your code, the next step is to push it to some <code class="language-plaintext highlighter-rouge">remote origin</code>, like Github. A repository can have multiple remotes if desired.</p>

<p>You can add and verify a new remote (like GitHub) with:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>git remote add origin https://github.com/USER/REPO&gt;.git
<span class="c"># Set a new remote</span>

<span class="nv">$ </span>git remote <span class="nt">-v</span>
<span class="c"># Verify new remote</span>
<span class="o">&gt;</span> origin  https://github.com/USER/REPO.git <span class="o">(</span>fetch<span class="o">)</span>
<span class="o">&gt;</span> origin  https://github.com/USER/REPO.git <span class="o">(</span>push<span class="o">)</span>
</code></pre></div></div>

<blockquote>
  <p>Note: You only need to do this once.</p>
</blockquote>

<p>You can then push your commits to the remote with:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git push
</code></pre></div></div>

<h3 id="pull-requests">Pull Requests</h3>

<p>Pull requests (PRs) are a mechanism for a developer to notify team members that they have completed a feature. This lets everybody involved know that they need to review the code and merge it into the <code class="language-plaintext highlighter-rouge">main</code>  or <code class="language-plaintext highlighter-rouge">dev</code> branch.</p>

<p>The pull request is more than just a notification. It’s a dedicated forum for discussing the proposed feature. If there are any problems with the changes, teammates can post feedback in the pull request and even tweak the feature by pushing follow-up commits. All of this activity is tracked directly inside of the pull request.</p>

<h4 id="how-it-works">How it works</h4>

<ol>
  <li>A developer creates the feature in a dedicated branch in their local repo.</li>
  <li>The developer pushes the branch to a remote repository (like GitHub).</li>
  <li>The developer files a pull request via GitHub.</li>
  <li>The rest of the team reviews the code, discusses it, and alters it as needed.</li>
  <li>The project maintainer or a team member merges the feature into the official repository and closes the pull request.</li>
</ol>

<p><img src="/assets/posts/opt/pull-request-1400.webp" alt="A pull request on GitHub showing passing checks and no merge conflicts" /></p>

<h3 id="issues">Issues</h3>

<p>Think of issues like a todo list. An issue allows developers to document and track bugs, features, and other required changes to a repository. You can assign team members to issues so that everyone knows who is working on what. You can also attach a new branch or a pull request to issues, which will allow team members and clients to see what code cooresponds with what issue. You can also use issues as a forum for discussing a proposed feature, similar to a PR, before any code is written.</p>

<p><img src="/assets/posts/opt/issue-1400.webp" alt="A GitHub issue with labels, assignees and a bot-managed stale workflow" /></p>

<h2 id="best-practices">Best Practices</h2>

<p>You’ve made it to the end. You know enough to use Git and GitHub effectively, but lets take a look at some best practices so you can make the most of your new knoledge.</p>

<h3 id="branching">Branching</h3>

<p>We are back to branching. I cannot stress this enough:
<strong><em>THE <code class="language-plaintext highlighter-rouge">MAIN</code> BRANCH IS ONLY FOR WORKING, PRODUCTION QUALITY CODE.</em></strong></p>

<p><img src="/assets/posts/git/git_branch.svg" alt="Branching model: tagged releases on main, ongoing work on develop, short-lived feature branches merging back in" /></p>

<p>You should also have a <code class="language-plaintext highlighter-rouge">dev</code> branch and have <code class="language-plaintext highlighter-rouge">feature</code> or <code class="language-plaintext highlighter-rouge">bugfix</code> branches for each issue you are working on.</p>

<p>Once you are done with your issue, make a PR into <code class="language-plaintext highlighter-rouge">dev</code> and get at least one review from a team member or project maintainer.</p>

<p>After your dev branch has gotten to a point where your team would be comfortable ‘shipping’ the repo to clients or consumers, make a PR into <code class="language-plaintext highlighter-rouge">main</code>. Code in <code class="language-plaintext highlighter-rouge">main</code> should be bug free, and ready for use by its intended audience.</p>

<blockquote>
  <p>Note: No two developers should <strong><em>ever</em></strong> work on the same branch. At first it might seem effective to collaborate together, but you will eventually have conflicts and overwrite each other’s code. This is not a fun problem to deal with.</p>
</blockquote>

<h4 id="example">Example</h4>

<ol>
  <li>I found a memory leak in our <code class="language-plaintext highlighter-rouge">dev</code> branch! :(</li>
  <li>I will branch off from <code class="language-plaintext highlighter-rouge">dev</code> into my new branch named <code class="language-plaintext highlighter-rouge">bugfix_memory-leak</code></li>
  <li>I’ll fix our big problem then create a PR from <code class="language-plaintext highlighter-rouge">bugfix_memory-leak</code> into <code class="language-plaintext highlighter-rouge">dev</code></li>
  <li>I’ll get at least one team member/maintainer to review my changes</li>
  <li>I’ll merge my changes into dev</li>
  <li>Much later, after my team is happy with the state of the project and all the progress made, we will decide its time to merge our <code class="language-plaintext highlighter-rouge">dev</code> branch into <code class="language-plaintext highlighter-rouge">main</code>. We get many reviews from team members and maintainers, then merge our PR.</li>
</ol>

<h3 id="issues-1">Issues</h3>

<p>If you are using Issues, leave a detailed description on each issue page you create. Everyone working on an issue should be assigned to it (usually people assign themselves to issues). Be sure to leave comments if you are blocked, and feel free to tag team members, PRs, or other Issues in those comments. If you aren’t planning on fixing an issue, tag it with <code class="language-plaintext highlighter-rouge">wontfix</code> and explain why you aren’t fixing it in a comment before closing it. Otherwise link a merged PR that solves the issue before closing it.</p>

<h2 id="thats-pretty-much-it">That’s pretty much it</h2>

<p>Have fun using Git! If you do it right it will save you a ton of time and trouble, especially when your repo or team grows.</p>

<h2 id="sources--further-reading">Sources &amp; Further Reading</h2>

<ul>
  <li><a href="https://about.gitlab.com/topics/version-control/">https://about.gitlab.com/topics/version-control/</a></li>
  <li><a href="https://www.w3schools.com/git/">https://www.w3schools.com/git/</a></li>
  <li><a href="https://www.atlassian.com/git/tutorials/syncing">https://www.atlassian.com/git/tutorials/syncing</a></li>
</ul>]]></content><author><name>Imad Najam</name></author><category term="Tutorial" /><category term="Git" /><summary type="html"><![CDATA[A practical walkthrough of Git: the basics, branching, remotes, GitHub features, and the commit habits worth forming early.]]></summary></entry><entry><title type="html">From Presentation to Celebration: My Internship Defense</title><link href="https://n-i.vercel.app/blog/internship-defense/" rel="alternate" type="text/html" title="From Presentation to Celebration: My Internship Defense" /><published>2024-06-13T00:00:00+00:00</published><updated>2024-06-13T00:00:00+00:00</updated><id>https://n-i.vercel.app/blog/internship-defense</id><content type="html" xml:base="https://n-i.vercel.app/blog/internship-defense/"><![CDATA[<p>On the day of my internship defense I presented my project to a panel of experts, including my supervisors and professors. The defense began with a detailed presentation of my work, where I highlighted the problem statement, objectives, methodologies, and the technical solutions I implemented.</p>

<hr />

<h2 id="the-big-day">The Big Day</h2>

<p>The culmination of my hard work during the internship was the defense presentation. I meticulously prepared to showcase the projects I had worked on and the knowledge I had gained. Standing before my supervisors and peers, I felt a mixture of nervousness and pride.</p>

<p><img src="/assets/posts/opt/i2-1400.webp" alt="Presenting the application architecture to the panel during the defense" /></p>

<h2 id="key-points-of-the-presentation">Key Points of the Presentation</h2>

<ul>
  <li>Application Architecture: I detailed the back-end architecture of the application, explaining how different components interacted with each other. This included a deep dive into the technologies used and the rationale behind architectural decisions.</li>
  <li>Challenges and Solutions: I highlighted the main challenges encountered during the project and the innovative solutions implemented to overcome them.</li>
  <li>Future Improvements: I also discussed potential future improvements and enhancements that could be made to the application to further increase its efficiency and functionality.</li>
</ul>

<h2 id="feedback-and-reflection">Feedback and Reflection</h2>

<blockquote>
  <p>The feedback I received was overwhelmingly positive. My supervisors appreciated the thoroughness of my presentation and the depth of my technical knowledge. This experience not only validated my efforts but also motivated me to continue striving for excellence in my career.</p>
</blockquote>

<h2 id="celebration">Celebration</h2>

<p><img src="/assets/posts/opt/i1-1400.webp" alt="With the team after the defense" /></p>

<p>After the presentation, we had a small celebration where I received a certificate of completion for my internship. It was a joyous moment that marked the end of an enriching journey and the beginning of a promising career.</p>

<p><a href="https://x.com/ImadNajam2/status/1809233635913953442">See the photos from the day on X →</a></p>]]></content><author><name>Imad Najam</name></author><category term="Internship" /><summary type="html"><![CDATA[Six months of internship work defended in front of a panel. The architecture I presented, the questions I got, and what came after.]]></summary></entry><entry><title type="html">My Participation in the Hackathon 2024</title><link href="https://n-i.vercel.app/blog/hackathon-2024/" rel="alternate" type="text/html" title="My Participation in the Hackathon 2024" /><published>2024-05-21T00:00:00+00:00</published><updated>2024-05-21T00:00:00+00:00</updated><id>https://n-i.vercel.app/blog/hackathon-2024</id><content type="html" xml:base="https://n-i.vercel.app/blog/hackathon-2024/"><![CDATA[<p>Taking part in the Hackathon 2024 organized by the Office de la Formation Professionnelle et de la Promotion du Travail (OFPPT) was an incredible experience. The event took place from May 21 to May 24, 2024, and it was a remarkable opportunity to engage with fellow innovators and showcase our creativity and problem-solving skills.</p>

<hr />

<h2 id="hackathon-experience">Hackathon Experience</h2>

<p>The hackathon was an intensive, collaborative event where teams worked on developing innovative solutions to various challenges. My team and I dived into the project with enthusiasm and dedication, working tirelessly to create something impactful.</p>

<p>Our contribution was recognized for its remarkable spirit of innovation and exceptional collaboration. It was an honor to receive the participation certificate, acknowledging our commitment and creativity throughout the event.</p>

<p><img src="/assets/posts/opt/hackathon-1400.webp" alt="The OFPPT certificate of participation for the 2024 hackathon, awarded in Casablanca on 24 May 2024" /></p>

<h2 id="reflecting-on-the-journey">Reflecting on the Journey</h2>

<p>Participating in this hackathon has been a significant milestone in my journey as a developer. It not only honed my technical skills but also enhanced my ability to work effectively in a team under pressure. The experience has inspired me to continue pushing the boundaries of what is possible through technology and collaboration.</p>]]></content><author><name>Imad Najam</name></author><category term="Hackathon" /><summary type="html"><![CDATA[Four days at the OFPPT Hackathon 2024. Building under pressure, and what working to a deadline with a team actually teaches you.]]></summary></entry><entry><title type="html">Unraveling L4G in the ERP Sage X3</title><link href="https://n-i.vercel.app/blog/unraveling-l4g-in-sage-x3/" rel="alternate" type="text/html" title="Unraveling L4G in the ERP Sage X3" /><published>2024-04-15T00:00:00+00:00</published><updated>2024-04-15T00:00:00+00:00</updated><id>https://n-i.vercel.app/blog/unraveling-l4g-in-sage-x3</id><content type="html" xml:base="https://n-i.vercel.app/blog/unraveling-l4g-in-sage-x3/"><![CDATA[<p>On my second day, I had the opportunity to delve into L4G scripting within the ERP Sage X3 environment. This powerful language allows for extensive customization and optimization of the ERP system, ensuring it meets the specific needs of businesses.</p>

<hr />

<h2 id="code-example-validating-customer-code-field">Code Example: Validating Customer Code Field</h2>

<p>Below is a practical example of L4G code that I worked on. This script validates the customer code (BPCNUM) in a sales order screen (SOH).</p>

<p>Here are some of Code Exemple:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ACTION
Case ACTION
When "AV_FIELD"
    Gosub AV_FIELD
Endcase
Return

$AV_FIELD
Case FIELD
When "BPCNUM"
    Gosub VALIDATE_BPCNUM
Endcase
Return

$VALIDATE_BPCNUM
Local Integer OK  # Define a local integer variable

# Check if the customer code is not empty
If [F:SOH]BPCNUM = ""
    Message("Customer code cannot be empty")
    OK = 0  # Validation failed
Else
    OK = 1  # Validation succeeded
Endif

# Return the validation result
If OK = 0
    Return
Endif

# Additional custom logic can be added here

Return
</code></pre></div></div>

<h2 id="explanation">Explanation</h2>

<p>To integrate this script into the sales order screen:</p>

<ul>
  <li>Go to Development &gt; Script Dictionary &gt; Screens.</li>
  <li>Find the screen you want to customize (e.g., SOH).</li>
  <li>Attach the script ZSOH to the screen by specifying it in the screen’s script field.</li>
</ul>

<h2 id="reflection">Reflection</h2>

<p>Working on this script was an enlightening experience. It not only improved my understanding of the ERP system but also demonstrated the flexibility and power of L4G. I am excited to continue exploring this technology and to contribute to innovative solutions at Inetum.</p>]]></content><author><name>Imad Najam</name></author><category term="ERP" /><category term="Internship" /><summary type="html"><![CDATA[L4G is the scripting language behind Sage X3 customisation. A worked example: validating the customer code field on a sales order screen.]]></summary></entry><entry><title type="html">My First Day at Inetum: A Journey Begins</title><link href="https://n-i.vercel.app/blog/first-day-at-inetum/" rel="alternate" type="text/html" title="My First Day at Inetum: A Journey Begins" /><published>2024-04-08T00:00:00+00:00</published><updated>2024-04-08T00:00:00+00:00</updated><id>https://n-i.vercel.app/blog/first-day-at-inetum</id><content type="html" xml:base="https://n-i.vercel.app/blog/first-day-at-inetum/"><![CDATA[<p><img src="/assets/posts/inetum.svg" alt="Inetum" class="prose__logo" /></p>

<p>Stepping into <a href="https://www.inetum.com/fr/maroc">@Inetum</a>’s office felt like entering a realm where innovation danced with expertise.
As a full-stack developer,my journey began with a rush of excitement and the promise of endless possibilities.
From code to collaboration, my first day at <a href="https://www.inetum.com/fr/maroc">@Inetum</a> was not just a beginning,
but a bold step towards shaping the future of digital excellence.</p>

<hr />

<h2 id="internship-life">Internship Life</h2>

<p>The turning point began in April.</p>

<p>The turning point began in April. The energy in the office was palpable, and I felt a sense of belonging from the moment I walked in. My colleagues welcomed me warmly, and I was quickly introduced to the tools and technologies that would define my work here.</p>

<p>The internship program at Inetum is designed to provide a comprehensive learning experience, combining hands-on projects with mentoring from industry experts. I was eager to dive into the tasks assigned to me and to start contributing to the team.</p>

<p><a href="https://x.com/inetum_world/status/1676159260324163584">See the post from Inetum on X →</a></p>]]></content><author><name>Imad Najam</name></author><category term="Internship" /><summary type="html"><![CDATA[My first week as a full-stack intern at Inetum Casablanca: the tools, the team, and how it set the tone for everything after.]]></summary></entry></feed>