C Training – Advanced C Programming Course

Title
SF001 – C Training – Advanced C Programming Course

Course Overview

Advanced C Programming Training

Advanced C programming course skims through the basics of C and soon jumps over to core of C programming language which looks simple but difficult to master. Our C Training will make the participant learn deep C secrets and develop a fairly advanced level of C programming expertise which is essential to write complex mission critical systems and application software.

Course Highlight

  • Advanced C Programming course will be delivered by our Founder/Director who is an Expert with 15+ years of experience in Linux Kernel and SAN software development. The C training flow will be an assignment driven model so that participants can develop an expert level C programming skills.
  • Participants will be writing lots of C programs dealing with operator precedence, conditional constructs, strings, pointers, arrays, arrays & pointers, double pointers, function pointers, pointers to arrays, internal storage for various data-types, creating in memory data-structures, bit-field operators, recursions, function call and stack formation, standard file I/O library, buffered IO, etc.

Course Delivery

  • Lectures, Classroom Discussions and C Programming Lab Exercises
  • 30% Theory, 70% Lab
  • Location: Bangalore, India

Pre-Requisites
Basic knowledge of C with a deep desire to learn C programming in depth.

Target Audience
IT Professionals and/or Students who want to become a serious Developer

Fee, Schedule & Registration
Click Here
for Advanced C Programming course training schedule, fee and registration information

Advanced C Training Course Outline

The C Language
C Program Compilation
Execution Process
Tokens of C Program
C Instructions
Constants, Variables
Identifiers and Keywords
Primitive Data Types
Structures – The Definition
Structures – Declaration & Type
Accessing Elements of Structure
Unions – Practical Example of Unions
Enumeration
Typedef Statements
Practical example of Typedef Usage
Bit-Fields in Structure
Practical examples of Bitfield Usage
Structure Padding & Pitfalls
Programming Model & Memory Sizes
IA-32, IA-64, ILP-32, LP64, x86-64
Array – Representation
Array – Memory Allocation
Array – Declaration & Initialization
Two Dimensional Arrays

Pointers
Accessing a Variable Through Pointer
Pointer – Memory Allocation
Pointer – Declaration & Initialization
Pointer – Dereferencing
Pointers & Arrays
Character Arrays using Pointers
Array of Character Pointers
Constant Pointers
Pointer Arithmetic
String Handling Functions
String Conversion Functions

Computing Basic
Binary & Octal Systems
Decimal & Hexadecimal Systems
Signed Representations in Memory
Binary Shifts – Right & Left
ASCII Representations
Endian-ness – Little Vs Big
Endian-ness – Portability Issues

Operators
Bitwise Operations
Logical Operators – Short Circuit
Pointer Increment & Scaling
Operator Precedence
Operator Associativity
Data-type Conversion Rules
Signed Vs Unsigned – Pitfalls
Sequence Points

Storage Classes
Storage Class Specifiers
Scope of a Variable
Register, Auto, Static, Extern
Const & Volatile
Practical Example of Volatile Usage
Lifetime of a Variable
Type Qualifiers

Memory
Dynamic Memory Allocations
malloc, calloc, realloc, free
Dangling Pointers
DMA – Errors
DMA – Unspecified Behaviour

Functions & Pointers
Invoking Functions
Passing Arguments to Functions
Passing Arrays to Functions
Function Call & Runtime Stack
Memory Organization
Function Pointers
Function Pointers as arguments
Practical Example of Function Pointers
Pointer to Structures
Pointer to an Integer Array
C Pointers Complexity Chart

Preprocessor
Preprocessor – #include statements
Preprocessor – #define statements
Preprocessor – Conditional Compilation
Preprocessor – Nested Macros
Preprocessor – Multiline Macros
Preprocessor – Stringizer
Preprocessor – Token Concatenation
Preprocessor – Useful Directives
Conditional Directives for Debugging

Command Line Argument
Recursion Example

Standard I/O Library
Files & Streams
Streams Buffers
Setting & Flushing Buffers
File Handling
File Modes
Character Based File I/O
Line Based File I/O
Formatted File I/O
Block File I/O
File Random Access

Sample C Assignments for Discussion/Memory-Diagram/Labs in Advanced C-Class

1. Comment on the output of following code:

  1.     #include <stdio.h>
  2.     main()
  3.     {
  4.         char *p = 0;
  5.         *p = 'a';
  6.         printf("value in pointer p is %c\n", *p);
  7.     }

a) It will print a
b) It will print 0
c) Compile time error
d) Run time error
View Answer

Answer:d
Output:
$ cc pgm.c
$ a.out
Segmentation fault (core dumped)

2. What is the output of this C code?

  1.    #include <stdio.h>
  2.    main()
  3.    {
  4.        if (sizeof(int) > -1)
  5.            printf("True");
  6.        else
  7.            printf("False");
  8.    }

a) True
b) False
View Answer

Answer:b
Output:
$ cc pgm.c
$ a.out
False

3. What is the output of this C code?

  1.     #include <stdio.h>
  2.     main()
  3.     {
  4.         char *p = "Sanfoundry C-Test";
  5.         p[0] = 'a';
  6.         p[1] = 'b';
  7.         printf("%s", p);
  8.     }

a) abnfoundry C-Test
b) Sanfoundry C-Test
c) Compile time error
d) Run time error
View Answer

Answer:d
Output:
$ cc pgm.c
$ a.out
Segmentation fault (core dumped)

4. What is the output of this C code?

  1.     #include <stdio.h>
  2.     int main()
  3.     {
  4.         float f = 0.1;
  5.         if (f == 0.1)
  6.             printf("True");
  7.         else
  8.             printf("False");
  9.     }

a) True
b) False
View Answer

Answer:a
Output:
$ cc pgm.c
$ a.out
False

5. What is the output of this C code?

  1.     #include <stdio.h>
  2.     main()
  3.     {
  4.         int n = 0, m = 0;
  5.         if (n > 0)
  6.             if (m > 0)
  7.                 printf("True");
  8.         else 
  9.             printf("False");
  10.     }

a) True
b) False
c) No Output will be printed
d) Run Time Error
View Answer

Answer:c
Output:
$ cc pgm.c
$ a.out
$

Fee, Schedule & Registration
Click Here
for Advanced C Programming course training schedule, fee and registration information

Manish Bhojasia, a technology veteran with 17+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He is Linux Kernel Developer and SAN Architect and is passionate about competency developments in these areas. He lives in Bangalore and delivers focused training sessions to IT professionals in Linux Kernel, Linux Debugging, Linux Device Drivers, Linux Networking, Linux Storage & Cluster Administration, Advanced C Programming, SAN Storage Technologies, SCSI Internals and Storage Protocols such as iSCSI & Fiber Channel. Stay connected with him below.

Sanfoundry is No. 1 choice for Deep Hands-ON Trainings in SAN, Linux & C, Kernel & Device Driver Programming. Our Founder has trained employees of almost all top companies in India. Here are few of them: Wipro Technologies, VMware, Citrix, Oracle, Motorola, Ericsson India, Motorola, Aricent, HP, Intuit, Microsoft, Cisco, SAP Labs, Siemens, HSBC, Northwest Bank, TCS, IBM, Accenture, Symantec, Redhat, Chelsio, Cavium Networks, ST Microelectronics, Samsung, LG-Soft, Mphasis, Tata Elxsi, Tata Communications, Mindtree, Cognizant, mid size IT companies and startups. The assignments and real time projects for our courses are of extremely high quality with excellent learning curve.

Register for Expert Level Training Classes by our Founder & CTO. Alternatively, call us for your Corporate Training or College Training needs.
Subscribe Newsletter & Posts





About

Manish Bhojasia, a technology veteran with 17+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He is Linux Kernel Developer and SAN Architect and is passionate about competency developments in these areas. He lives in Bangalore and delivers focused training sessions to IT professionals in Linux Kernel, Linux Debugging, Linux Device Drivers, Linux Networking, Linux Storage & Cluster Administration, Advanced C Programming, SAN Storage Technologies, SCSI Internals and Storage Protocols such as iSCSI & Fiber Channel. Stay connected with him below.

Posted in Trainings & Workshops
Testimonials
The presentation was really good. Advanced C was excellent.
— Alan - Wipro Technologies
It was a wonderful course, a thorough study through the bits and pieces of Storage Devices and the other advancements in the SAN technology which was very informative for me. Well prepared slides, practical thoughts and fully interactive class.
— Milind - Microsoft
The way of teaching is excellent. Now we have very good knowledge in linux systems programming.
— Javeed - TCS
The training I got was very helpful. The most important thing, which i liked the most is way of training based on "Show me the code". It has made my knowledge in Unix deeper and cleared the doubts I had and also made me to do lots of coding in very exciting ways during sessions. Thanks a million to Manish Bhojasia.
— Harsh - Wipro Technologies
The SAN training was excellent. Good hands on and conceptually I understood a lot, the learning curve was excellent. Thanks Manish!!
— Amit - Ericsson India
Best Training class I ever had on Linux.
— Swati - Aricent
Thank you for providing such an awesome experience on Linux Device Driver Programming. The real beauty in this training that I could witness was its practical exposures and explanations on the same in a neat way.
— Roshan - Oracle/Sun
Lab sessions for SAN on Ubuntu was very useful.
— Ajit - Ericsson India
Posted Image