C Programming Principles and Basics
C Programming Principles and Basics
LECTURE NOTES
PRINCIPLES OF
PROGRAMMING
NAME: ……………………………………………………………………………………………….
REGNO: ……………………………………………………………………………………………….
What is C?
C is a programming language developed at AT & T‟s Bell Laboratories of USA in 1972. It was
designed and written by Dennis Ritchie. Dennis Ritchie is known as the founder of c
language.
It was developed to overcome the problems of previous languages such as B, BCPL etc.
Features of C
1. Portability or machine independent
2. Sound and versatile language 3. Fast program
execution.
4. An extendible language.
5. Tends to be a structured language.
Historical developments of C(Background)
Year Language Developed by Remarks
/* Documentation section */
/* Link section */
/* Definition section */ /*
Global declaration section */
main ()
{
Declaration part
Executable part (statements)
}
/* Sub-program section */
The documentation section is used for displaying any information about the
program like the purpose of the program, name of the author, date and time written
etc, and this section should be enclosed within comment lines. The statements in the
documentation section are ignored by the compiler.
The link section consists of the inclusion of header files.
The definition section consists of macro definitions, defining constants etc,
Anything declared in the global declaration section is accessible throughout the
program, i.e. accessible to all the functions in the program.
main () function is mandatory for any program and it includes two parts, the
declaration part and the executable part.
The last section, i.e. sub-program section is optional and used when we require
including user defined functions in the program.
First C Program
Before starting the abcd of C language, you need to learn how to write, compile and run the first c
program.
To write the first c program, open the C console and write the following code:
1. #include <stdio.h>
2. #include <conio.h>
3. void main () {
4. printf ("Hello C Language");
5. getch ();
6. }
#include <stdio.h> includes the standard input output library functions. The printf () function
is defined in stdio.h.
#include <conio.h> includes the console input output library functions. The getch () function is
defined in conio.h file.
void main () The main () function is the entry point of every program in c language. The void
keyword specifies that it returns no value.
getch () The getch () function asks for a single character. Until you press any key, it blocks the
screen.
C TOKENS: The smallest individual units are known as tokens. C has six types of tokens.
1: Identifiers
2: Keywords
3: Constants
4: Strings
5: Special Symbols
6: Operators
Identifiers:
Identifiers refer to the names of variables, constants, functions and arrays. These are user-defined
names is called Identifiers. These identifiers are defined against a set of rules.
Ex: Valid Invalid
STDNAME Return
SUB $stay
TOT_MARKS 1RECORD
Y2K
Data Types/Types:
To store data the program must reserve space which is done using datatype. A datatype is a
keyword/predefined instruction used for allocating memory for data. A data type specifies
the type of data that a variable can store such as integer, floating, character etc. It used for
declaring/defining variables or functions of different types before to use in a program.
The basic data types are integer-based and floating-point based. C language supports both signed
and unsigned literals. The memory size of basic data types may change according to 32- or 64-bit
operating system. Let’s see the basic data types. Its size is given according to 32-bit architecture.
Variables
A variable is a name of memory location. It is used to store data. Variables are changeable,
we can change value of a variable during execution of a program. It can be reused many times.
Declaration of Variables: A variable can be used to store a value of any data type. The
declaration of variables must be done before they are used in the program. The general format for
declaring a variable.
Ex: int x, y, z;
double a,b;
char m,n;
Assigning values to variables: values can be assigned to variables using the assignment
operator (=). The general format statement is :
Ex: x=100;
a= 12.25;
m=‟f‟;
we can also assign a value to a variable at the time of the variable is declared. The general format
of declaring and assigning value to a variable is:
Types of Variables in C
1. local variable
2. global variable
3. static variable
Constants
Constants refer to fixed values that do not change during the execution of a program.
CONSTANTS
TYPES OF C CONSTANT:
1. Integer constants
2. Real or Floating point constants
3. Character constants
4. String constants
5. Backslash character constants
7. getch ();
8. }
Output:
The value of PI is: 3.140000
2) C #define pre-processor
The #define preprocessor is also used to define constant.
C#define
The #define preprocessor directive is used to define constant or micro substitution. It can use any
basic data type.
Syntax:
#define token value
Let's see an example of #define to define a constant.
#include <stdio.h>
1. #define PI 3.14
2. main () {
3. printf("%f”, PI);
4. }
Output:
3.140000
Input / Output (I/O) Functions: In „C‟ language, two types of Input/output functions are
available, and all input and output operations are carried out through function calls. Several
functions are available for input / output operations in „C‟. These functions are collectively known as
the standard i/o library.
Input: In any programming language input means to feed some data into program. This can be
given in the form of file or from command line.
Output: In any programming language output means to display some data on screen, printer or in
any file.
The Standard Files
C programming treats all the devices as files. So devices such as the display are addressed in the
same way as files and the following three files are automatically opened when a program executes
to provide access to the keyboard and screen.
Standard File File Pointer Device
Ex: a+b;
Where a,b are operands and + is the operator.
Types of Operator :
1) Arithmetic Operators.
2) Relational Operators.
3) Logical Operators.
4) Assignment Operators. 5). Unary Operators.
6) Conditional Operators.
7) Special Operators.
8) Bitwise Operators.
9) Shift Operators.
Arithmetic Operators
An arithmetic operator performs mathematical operations such as addition, subtraction and
multiplication on numerical values (constants and variables). C Program to demonstrate the
working of arithmetic operators
#include <stdio.h>
void main()
{
int a = 9,b = 4, c;
c = a+b;
printf("a+b = %d \n",c);
c = a-b; printf("a-b
= %d \n",c);
c = a*b;
printf("a*b = %d \n",c);
c=a/b;
printf("a/b = %d \n",c);
c=a%b;
printf("Remainder when a divided by b = %d \n",c);
}
Output
a+b = 13
a-b = 5
a*b = 36
a/b = 2
Remainder when a divided by b=1
Relational Operators. A relational operator checks the relationship between two operands.
If the relation is true, it returns 1; if the relation is false, it returns value 0.
Operands may be variables, constants or expressions.
c) ; //true return 0; }
Output
5 == 5 = 1
5 == 10 = 0
5>5=0
5 > 10 = 0
5<5=0
5 < 10 = 1
5 != 5 = 0
5 != 10 = 1
5 >= 5 = 1
5 >= 10 = 0
5 <= 5 = 1
5 <= 10 = 1
Logical Operators.
These operators are used to combine the results of two or more conditions. An expression
containing logical operator returns either 0 or 1 depending upon whether expression results true or
false. Logical operators are commonly used in decision making in C programming.
Operator Meaning Example Return value
&& Logical AND (9>2)&&(17>2) 1
|| Logical OR (9>2) || (17 = = 7) 1
! Logical NOT 29!=29 0
Logical AND : If any one condition false the complete condition becomes false.
Truth Table
Op1 Op2 Op1 && Op2
true true true
true false false
false true false
false false false
Logical OR : If any one condition true the complete condition becomes true.
Truth Table
Op1 Op2 Op1 // Op2
true true true
Logical Not : This operator reverses the value of the expression it operates on i.e, it makes a
true expression false and false expression true.
Op1 Op1 !
true false
false true
// C Program to demonstrate the working of logical operators
#include <stdio.h>
0; }
Output
(a = b) || (c < b) equals to 1
(a != b) || (c < b) equals to 0
!(a != b) equals to 1
!(a == b) equals to 0
Assignment Operators. Assignment operators are used to assign a value (or) an expression
(or) a value of a variable to another variable.
Ex : x=10;
y=a+b;
z=p;
„C‟ provides compound assignment operators to assign a value to variable in order to assign a new
value to a variable after performing a specified operation.
#include
<stdio.h> int
main() { int a =
5, c; c = a;
printf("c = %d \n",
c); c += a; // c = c+a
c -= a; // c = c-a
c *= a; // c = c*a
c /= a; // c = c/a
c %= a; // c = c%a
printf("c = %d \n", c);
return 0; }
Output
c=5
c = 10
c=5
c = 25
c=5
c=0
1. Increment operator is used to increment the current value of variable by adding integer 1.
We have two types of increment operator i.e Pre-Increment and Post-Increment Operator.
Pre-Increment
Pre-increment operator is used to increment the value of variable before using in the expression. In the
Pre-Increment value is first incremented and then used inside the expression.
b = ++y;
In this example suppose the value of variable „y‟ is 5 then value of variable „b‟ will be 6 because the
value of „y‟ gets modified before using it in a expression.
Post-Increment
Post-increment operator is used to increment the value of variable as soon as after executing
expression completely in which post increment is used. In the Post-Increment value is first used
in a expression and then incremented.
b = x++;
In this example suppose the value of variable „x‟ is 5 then value of variable „b‟ will be 5 because old
value of „x‟ is used.
Note:
We cannot use increment operator on the constant values because increment operator operates on
only variables. It increments the value of the variable by 1 and stores the incremented value back
to the variable
b=
++5; or
b=
5++;
Operator Meaning
++x Pre increment
- -x Pre decrement
x++ Post increment
x-- Post decrement
Where
1 : ++x : Pre increment, first increment and then do the operation.
2 : - -x : Pre decrement, first decrements and then do the operation. 3 : x++ : Post
increment, first do the operation and then increment.
4 : x- - : Post decrement, first do the operation and then decrement.
Output
++a = 11
--b = 99
++c = 11.500000
++d = 99.500000
printf("%d\n", i);
printf("%d\n", j);
}
Output:
2
2
Explanation of Program
#include
<stdio.h> int
main(){ char
February; int
days;
printf("If this year is leap year, enter 1. If not enter any integer: ");
scanf("%c",&February);
// If test condition (February == 'l') is true, days equal to 29.
// If test condition (February =='l') is false, days equal to 28.
days = (February == '1') ? 29 : 28;
printf("Number of days in February = %d",days);
return 0;
}
Output
If this year is leap year, enter 1. If not enter any integer: 1
Number of days in February = 29
Bitwise Operators:
Bitwise operators are used to manipulate the data at bit level. It operates on integers only. It may
not be applied to float. In arithmetic-logic unit (which is within the CPU), mathematical operations
like: addition, subtraction, multiplication and division are done in bit-level which makes processing
faster and saves power. To perform bit-level operations in C programming, bitwise operators are
used.
Operator Meaning
& Bitwise AND
| Bitwise OR
^ Bitwise XOR
<< Shift left
>> Shift right
~ One’s complement.
Bitwise OR operator |
The output of bitwise OR is 1 if at least one corresponding bit of two operands is 1. In C
Programming, bitwise OR operator is denoted by |.
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bitwise OR Operation of 12 and 25
00001100
| 00011001
}
Output
Output =29
Expressions
Ex: 3+5 is a simple expression which yields a value 8, -a is also a single expression.
A complex expression contains more than one operator.
Ex: complex expression is 6+8*7.
Operator Precedence:
Arithmetic Operators are evaluated left to right using the precedence of operator when the
expression is written without the [Link] are two levels of arithmetic operators in C.
1: High Priority * / %
2 : Low Priority + -.
Arithmetic Expression evaluation is carried out using the two phases from left to right.
1 : First phase: The highest priority operator is evaluated in the 1st phase.
2 : Second Phase: The lowest priority operator is evaluated in the 2nd phase.
1st phase:
1 : a = 7-3+11*2+8/4
2 : a = 7-3+22+8/4 3: a = 7-3+22+2
2nd phase :
1 : a = 4+22+2
2 : a = 26+2
3 : a = 28
Whenever parentheses are used, the expressions within parantheses highest priority. If two or
more sets of parenthesis appear one after another. The expression contained in the left-most set is
evaluated first and the right-most in the last.
1st phase:
1 : 9-12/6*(2-1)
2 : 9-12/6*1
2nd phase:
1: 9-2*1
2: 9-2.
3rd phase:
1: 7.
Every operator has a precedence value. An expression containing more than one operator is
known as complex expression. Complex expressions are executed according to precedence of
operators.
Associativity specifies the order in which the operators are evaluated with the same precedence in
a complex expression. Associativity is of two ways, i.e. left to right and right to left. Left to right
associativity evaluates an expression starting from left and moving towards right. Right to left
associativity proceeds from right to left.
UNIT II
STATEMENTS
A statement causes the computer to carry out some definite action. There are three different
classes of statements in C:
A selection statement selects among a set of statements depending on the value of a controlling
expression. Or
Moving execution control from one place/line to another line based on condition
Or
Conditional statements control the sequence of statement execution, depending on the value of a
integer expression
1: if
2: switch.
1: simple if statement.
2: if –else statement
4: else if ladder.
if statement.
The if statement controls conditional branching. The body of an if statement is executed if the
value of the expression is nonzero. Or if statement is used to execute the code if condition
is true. If the expression/condition is evaluated to false (0), statements inside the body of if is
skipped from execution.
Syntax: if(condition/expression)
true statement; }
statement-x;
If the condition/expression is true, then the true statement will be executed otherwise the true
statement block will be skipped and the execution will jump to the statement-x. The „true
statement‟ may be a single statement or group of statement.
If there is only one statement in the if block, then the braces are optional. But if
there is more than one statement the braces are compulsory
Flowchart
Example:
#include<stdio.h>
int main () {
a=15, b=20;
if(b>a) {
printf ("b is greater");
}
Output: b is greater
#include
<stdio.h>
int main () {
int number;
{
printf ("You entered %d.\n", number);
}
return 0;
}
Output 1
Enter an integer: -2
You entered -2.
The if statement is easy.
Output 2
Enter an integer: 5
The if statement in C programming is easy.
If-else statement: The if-else statement is an extension of the simple if statement. The general
form is. The if...else statement executes some code if the test expression is true (nonzero) and
some other code if the test expression is false (0).
Syntax: if (condition)
{
true statement;
}
else
{
false statement;
}
statement-x;
If the condition is true, then the true statement and statement-x will be executed and if the
condition is false, then the false statement and statement-x is executed. Or
If test expression is true, codes inside the body of if statement is executed and, codes inside the
body of else statement is skipped.
If test expression is false, codes inside the body of else statement is executed and, codes inside the
body of if statement is skipped.
Flowchart
Example:
// Program to check whether an integer entered by the user is odd or even
#include <stdio.h>
int main ()
{
int number;
printf ("Enter an integer: ");
scanf ("%d”, &number);
// True if remainder is 0
if (number%2 == 0)
printf ("%d is an even integer.”, number);
else
printf ("%d is an odd integer.”,
number); return 0; }
Output
Enter an integer: 7
7 is an odd integer.
executed otherwise the statement-2 will be executed and then the control is transferred to the
statement-x
Flowchart
Example
#include<stdio.h>
int var1, var2;
printf ("Input the value of var1:");
scanf ("%d", &var1);
printf ("Input the value of var2:");
scanf ("%d”, &var2); if (var1 !=var2)
{
printf ("var1 is not equal to var2");
//Below – if-else is nested inside another if block
if (var1 >var2)
{
printf ("var1 is greater than var2");
}
else
{
printf ("var2 is greater than var1");
}
}
else
{
printf ("var1 is equal to var2");
}
…
No curly braces are required in the above case, but if we have more than one statement
5. == must be used for comparison in the expression of if condition, if you use = the expression will
Switch statement: when there are several options and we have to choose only one option from
the available ones, we can use switch statement. Depending on the selected option, a particular
task can be performed. A task represents one or more statements.
Syntax:
switch(expression)
{
case value-1:
statement/block-1;
break;
case value-2:
statement/block t-2;
break;
case value-3:
statement/block -3;
break;
case value-4:
statement/block -4;
break;
default:
default- statement/block t;
break;
}
Flowchart
Points to Remember
It isn’t necessary to use break after each block, but if you do not use it, all the consecutive block of
codes will get executed after the matching block.
1. int i = 1;
2. switch(i)
3. {
4. case 1:
5. printf("A"); // No break
6. case 2:
7. printf("B"); // No break
8. case 3:
9. printf("C");
break;
}
Output : A B C
The output was supposed to be only A because only the first case matches, but as there is no break
statement after the block, the next blocks are executed, until the cursor encounters a break.
default case can be placed anywhere in the switch case. Even if we don't include the default case switch
statement works.
How it Works
A sequence of statements are executed until a specified condition is true. This sequence of statements
to be executed is kept inside the curly braces { } known as the Loop body. After every execution of
loop body, condition is verified, and if it is found to be true the loop body is executed again. When the
condition check returns false, the loop body is not executed.
The loops in C language are used to execute a block of code or a part of the program several times.
In other words, it iterates/repeat a code or group of code many times.
Or Looping means a group of statements are executed repeatedly, until some logical condition is
satisfied.
Suppose that you have to print table of 2, then you need to write 10 lines of code. By using the loop
statement, you can do it by 2 or 3 lines of code only.
1 : while loop
2 : do-while loop
3 : for loop
initialization ;
while (condition)
decrement ;
#include<conio.h>
void main ()
int x;
x=1; while(x<=10)
x++; } getch(); }
Output 1 2 3 4 5 6 7 8 9 10
#include<conio.h>
Int main ()
clrscr();
while(n!=0)
rem=n%10;
reverse=reverse*10+rem; n/=10;
getch ();
Flowchart
do-while loop
Syntax: variable initialization;
do{ statements ;
} while (condition);
The do-while loop is an exit-controlled loop statement The body of the loop are executed first and
then the condition is evaluated. If it is true, then the body of the loop is executed once again. The
process of execution of body of the loop is continued until the condition finally becomes false and the
control is transferred to the statement immediately after the loop. The statements are always executed
at least once.
Flowchart
#include<conio.h>
void main () {
int a, i;
a=5; i=1;
do { printf("%d\t”,
Output
5 10 15 20 25 30 35 40 45 50
Example
main () {
int i=0 do
while
Out of loop
For Loop:
• This is an entry controlled looping statement.
• One of the most important features of this loop is that the three actions can be taken at a time
like variable initialization, condition checking and increment/decrement.
• The for loop can be more concise and flexible than that of while and do-while loops.
Statements;
Example:
#include<stdio.h>
#include<conio.h> void
main ()
int x;
{ printf("%d\t",x);
} getch(); }
Output
1 2 3 4 5 6 7 8 9 10
#include <stdio.h>
int main () {
{
sum += count;
return 0;}
Output
Sum = 55
If you don't initialize any variable, check condition and increment or decrement variable in for loop, it
is known as infinitive for loop. In other words, if you place 2 semicolons in for loop, it is known as
infinitive for loop.
for (; ;) {
Syntax:
{ statement;
}
Example: main () {
#include<stdio.h>
#include<conio.h>
void main () {
int i, j;
for(i=1; i<5;i++)
{ printf("\n");
for(j=i;j>0;j--)
printf("%d",j);
} }
getch(); }
Output
21
321
4321 54321
ARRAYS
Using Arrays in C
C supports a derived data type known as array that can be used to handle large amounts of data
(multiple values) at a time.
Definition:
An array is a data structured that can store a fixed size sequential collection of elements of same data
type.
Suppose you have to store marks of 50 students, one way to do this is allotting 50 variables.
So, it will be typical and hard to manage. For example, we can not access the value of these
variables with only 1 or 2 lines of code.
Another way to do this is array. By using array, we can access the elements easily. Only few
lines of code are required to access the elements of array.
2) Easy to traverse data: By using the for loop, we can retrieve the elements of an array easily. 3)
Easy to sort data: To sort the elements of array, we need a few lines of code only.
4) Random Access: We can access any element randomly using the array.
Disadvantage of Array
Fixed Size: Whatever size, we define at the time of declaration of array, we can't exceed the
limit. So, it doesn't grow the size dynamically like LinkedList Declaration of an Array
For example:
int arr[10];
Here int is the data type, arr is the name of the array and 10 is the size of array. It means array arr
can only contain 10 elements of int type. Index of an array starts from 0 to size-1 i.e first element of
arr array will be stored at arr[0] address and last element will occupy arr[9].
Initialization of an Array
After an array is declared it must be initialized. Otherwise, it will contain garbage value(any random
value). An array can be initialized at either compile time or at runtime.
4 : String initialization.
1 : Initilizing all specified memory locations : If the number of values to be initialized is equal
to size of array. Arrays can be initialized at the time of declaration. Array elements can be initialized
with data items of type int,float,char, etc.
initialized.
If the size of integer is 2 bytes, 10 bytes will be allocated for the variable a. Ex :
C O M P U T E R
Other Examples: char b[5] ={„J‟,‟B‟,‟R‟,‟E‟,‟C‟,‟B‟};
//error: number of initial values are more than the size of array.
//error: Number of initial values are more than the size of array.
int a[5]={10,15};
In general array name[n-1] can be used to access nth element of an array. where n is any integer
number.
Example
float mark[5];
Suppose you declared an array mark as above. The first element is mark[0], second element is
mark[1] and so on.
Few key notes:
• Arrays have 0 as the first index not 1. In this example, mark [0]
• If the size of an array is n, to access the last element, (n-1) index is used. In this example,
mark [4]
• Suppose the starting address of mark [0] is 2120d. Then, the next address, a[1], will be 2124d,
address of a[2] will be 2128d and so on. It's because the size of a float is 4 bytes.
As you can see, in above example that I have used „for loop‟ and „scanf statement‟ to enter data into
array. You can use any loop for data input.
Code:
scanf("%d", &num[x]);
For example you want to read and display array elements, you can do it just by using any loop.
Suppose array is my data[20].
{ printf("%d\n", my data[x]);
Example
#include<stdio.h>
#include<conio.h>
void main () {
C Page 45
PROGRAMMING
int i;
} getch ();}
Output
2 3 4
Example
1. include <stdio.h>
2. #include <conio.h>
3. void main(){
4. int i=0;
5. int marks [5]={20,30,40,50,60};//declaration and initialization of array 6. clrscr();
7.
8. //traversal of array
9. for(i=0; i<5;i++){
10. printf ("%d \n”, marks[i]); 11. }
12.
13. getch();
14. }
Output
20
30
40
50
60
An array can also be initialized at runtime using scanf() function. This approach is usually used
for initializing large array, or to initialize array with user specified values.
Example
#include<stdio.h>
#include<conio.h>
void main ()
C Page 46
PROGRAMMING
{ int arr[4];
int i, j;
} for(j=0;j<4;j++)
{ printf("%d\n",arr[j]);
} getch(); }
The two dimensional, three dimensional or other dimensional arrays are also known as
multidimensional arrays.
name[size1][size2];
Example int
twodimen[4][3];
Example:
int a[3][4];
C Page 47
PROGRAMMING
Initialization of 2D Array int
arr[4][3]={{1,2,3},{2,3,4},{3,4,5},{4,5,6}};
An element in a two-dimensional array is accessed by using the subscripts, i.e., row index and
column index of the array.
Example
1. #include <stdio.h>
2. #include <conio.h>
3. void main () {
4. int i=0, j=0;
5. int arr [4][3]={{1,2,3},{2,3,4},{3,4,5},{4,5,6}};
6. clrscr ();
7. //traversing 2D array
8. for(i=0;i<4;i++){
9. for(j=0;j<3;j++){
10. printf("arr[%d] [%d] = %d \n",i,j, arr[i][j]);
11. }//end of j
12. }//end of i
13. getch();
14. }
C Page 48
PROGRAMMING
Output
arr[0][0] = 1 arr[0][1] =
2 arr[0][2] = 3 arr[1][0]
= 2 arr[1][1] = 3
arr[1][2] = 4 arr[2][0] =
3 arr[2][1] = 4 arr[2][2]
= 5 arr[3][0] = 4
arr[3][1] = 5 arr[3][2] =
6
Multidimensional Arrays
How to initialize a multidimensional array?
You can initialize a three-dimensional array in a similar way like a two dimensional array. Here's an
example
};
Example
main ()
&test[i][j][k]);
C Page 49
PROGRAMMING
// Displaying values with proper index.
} }
return 0;}
Output
Enter 12 values:
123456789101112 Displaying
Values: test[0][0][0] = 1
test[0][0][1] = 2 test[0][1][0] = 3
test[0][1][1] = 4 test[0][2][0] = 5
test[0][2][1] = 6 test[1][0][0] = 7
test[1][0][1] = 8 test[1][1][0] = 9
test[1][1][1] = 10 test[1][2][0] =
11 test[1][2][1] = 12
STRINGS:
String Concepts
String is an array of characters that is terminated by \0 (null character). This null character
indicates the end of the string. Strings are always enclosed by double quotes (“ " ). Whereas,
character is enclosed by single quotes.
Or
In „C‟ language the group of characters, digits, and symbols enclosed within double quotation (“
" ) marks are called as string otherwise a string is an array of characters and terminated by NULL
character which is denoted by the escape sequence „\0‟.
C Strings
C Page 50
PROGRAMMING
Declaration of String: C does not support string as a data type. However, it allows us to represent
strings as character arrays. In C, a string variable is any valid C variable name and it is always declared
as an array of characters.
Note: In declaration of string size must be required to mention otherwise it gives an error. Ex:
char str []; // Invalid char str[0]; // Invalid char str[-1]; // Invalid char str[10];
Using this declaration, the compiler allocates 9 memory locations for the variable a ranging
from 0 to 8.
0 1 2 3 4 5 6 7 8
Here, the string variable a can hold maximum of 9 characters including NULL (\0)
character.
Note: In Initialization of the string if the specific number of characters is not initialized it then rest of
all character will be initialized with NULL.
NULL
Note: In initialization of the string we can not initialized more than size of string elements.
Ex:
C Page 51
PROGRAMMING
Different ways of initialization can be done in various ways:
The compiler allocates 9 memory locations ranging from 0 to 8 and these locations are
initialized with the characters in the order specified. The remaining locations are automatically
initialized to null characters.
C O M P U T E R \0
0 1 2 3 4 5 6 7 8
2 : Partial Array Initialization: If the characters to be initialized is less than the size of the array,
then the characters are stored sequentially from left to right. The remaining locations will be
initialized to NULL characters automatically.
int a[10]={„R‟,‟A‟,‟M‟,‟A‟ };
The compiler allocates 10 bytes for the variable a ranging from 0 to 9 and initializes
first four locations with the ASCII characters of „R‟, „A‟, „M‟, „A”. The remaining locations are
automatically filled with NULL characters (i.e., \0).
R A M A \0 \0 \0 \0 \0 \0
0 1 2 3 4 5 6 7 8 9
3 : Initialization without size : consider the declaration along with the initialization
char b[]={„C‟,‟O‟,‟M‟,‟P‟,‟U‟,‟T‟,‟E‟,‟R‟};
C Page 52
PROGRAMMING
In this declaration, The compiler will set the array size to the total number of initial
values i.e 8. The character will be stored in these memory locations in the order specified.
4) Array Initialization with a String: consider the declaration with string initialization.
char b [ ] = “COMPUTER”;
Here, the string length is 8 bytes. But, string size is 9 bytes. So the compiler reserves 8+1
memory locations and these locations are initialized with the characters in the order specified. The
string is terminated by \0 by the compiler.
C O M P U T E R \0
0 1 2 3 4 5 6 7 8
The string “COMPUTER” contin 8 charactes, because it is a string. It always ends with null
character. So, the array is 9 bytes (i.e string length+1 byte for null character).
Reading and Writing Strings : The „%s‟ control string can be used in scanf() statement to read a string
from the terminal and the same may be used to write string to the terminal in printf() statement.
scanf(“%s”,name);
printf(“%s”,name);
Example:
1. #include <stdio.h>
2. void main ()
3. {
4. char ch[13]={'c', 'p', 'r', 'o', 'g', 'r', 'a', 'm', 'm', i', „n‟, „g‟, „\0‟};
5. char ch2[13]="cprogramming";
6.
C Page 53
PROGRAMMING
9. }
Output
Example:
{ char name[20];
scanf("%s", name);
name);
return 0; }
Output
The strings can be read from the keyboard and can be displayed onto the monitor using
various functions.
The various input and output functions that are associated with can be classified as
C Page 54
PROGRAMMING
Formated I/O Functions Unformated I/O Functions
scanf( print()
) getc( putc()
)
fscanf( fprintf()
) getchar( putchar(
) )
gets( puts(
) )
getch()
getche(
)
1 : getchar() function : A single character can be given to the computer using „C‟ input library
function getchar().
The getchar() function is written in standared I/O library. It reads a single character from a
standared input device. This function do not require any arguments, through a pair of parantheses, must
follow the statements getchar().
#include<stdio.h>
#include<conio.h>
#include<ctype.h> void
main()
C Page 55
PROGRAMMING
{ char ch;
clrscr();
ch=getchar(); if(isalpha(ch)>0)
if(isdigit(ch)>0) printf("it is a
digit:%c\n",ch); else
}.
it is a alphabet:a
2 : putchar() function :The putchar() function is used to display one character at a time on the
standared output device. This function does the reverse operation of the single character input function.
#include<stdio.h>
#include<conio.h>
#include<ctype.h> void
main()
putchar(toupper(ch));
else
putchar(tolower(ch)); getch();
C Page 56
PROGRAMMING
A
3 : gets() : The gets() function is used to read the string (String is a group of characters) from the
standard input device (keyboard).
Ex :#include<stdio.h>
#include<conio.h> void
main()
char str[40];
clrscr();
gets(str);
getch();
4 : puts() :The puts() function is used to display the string to the standared output device (Monitor).
#include<stdio.h>
#include<conio.h> void
main()
{ char str[40];
puts("Enter
String name:");
C Page 57
PROGRAMMING
gets(str); puts("Print the string
subbareddy
subbareddy
getch() function :The getch function reads a single character directly from the keyboard, without
echoing to the screen.
#include<stdio.h>
void main()
{ char c;
c=getch();
getche() function :The getche() function reads a single character from the keyboard and echoes it to
the current text window.
#include<stdio.h>
void main()
char c;
c=getche();
getc() function : This function is used to accept a single character from the standared input to a
character variable.
C Page 58
PROGRAMMING
putc() function :This function is used to display a single character in a character variable to standared
output device.
Array of Strings
1 : strlen(string) – String Length : This function is used to count and return the number of characters
present in a string.
Syntax: var=strlen(string);
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main () {
C Page 59
PROGRAMMING
int len1,len2; clrscr();
getch();
OUTPUT :
#include<stdio.h>
#include<conio.h> void
main()
string:"); scanf("%s",str);
for(index=0;str[index]!=0;index++);
getch();
OUTPUT :
2 : strcpy(string1,string2) – String Copy : This function is used to copy the contents of one string to
another string.
C Page 60
PROGRAMMING
Syntax : strcpy(string1,string2); Where
#include<stdio.h>
#include<conio.h>
#include<string.h> void
main()
char str1[]="REDDY";
:%s",str2);
OUTPUT :
#include<stdio.h>
C Page 61
PROGRAMMING
char str1[10],str2[20]; int
string\n"); scanf(“%s”,str1);
for(index=0;str1[index]!='\0';index++)
str2[index]=str1[index];
str2[index]='\0';
printf("String1 is :%s\n",str1);
printf("String2 is :%s\n",str2);
getch();
OUTPUT:
3: strlwr(string) – String Lowercase: This function is used to converts upper case letters of the string
in to lower case letters.
Syntax: strlwr(string);
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main ()
clrscr ();
strlwr(str);
getch ();
C Page 62
PROGRAMMING
}
#include<stdio.h>
#include<conio.h>
void main ()
int index;
str);
str[index]=str[index]+32;
4: strupr(string) – String Uppercase: This function is used to converts lower case letters of the string
in to upper case letters.
Syntax: strupr(string);
#include<stdio.h>
C Page 63
PROGRAMMING
#include<conio.h>
#include<string.h>
str[]="jbrec";
strupr(str);
scanf("%s",str);
for(index=0;str[index]!='\0';index++)
str[index]=str[index]-32;
C Page 64
PROGRAMMING
UNIT – III
FUNCTIONS:
To perform any task, we can create function. A function can be called many times. It provides
modularity and code reusability.
Advantage of functions
1) Code Reusability
By creating functions in C, you can call it many times. So we don't need to write the same code again
and again.
2) Code optimization
Example: Suppose, you have to check 3 numbers (781, 883 and 531) whether it is prime number or
not. Without using function, you need to write the prime number logic 3 times. So, there is repetition of
code.
But if you use functions, you need to write the logic only once and you can reuse it several times.
C Page 65
PROGRAMMING
C Page 66
PROGRAMMING
Types of Functions
1. Library Functions: are the functions which are declared in the C header files such as scanf(),
printf(), gets(), puts(), ceil(), floor() etc. You just need to include appropriate header files to use
these functions. These are already declared and defined in C libraries. oints to be
Remembered
System defined functions are implemented in .dll files. (DLL stands for Dynamic Link
Library).
To use system defined functions the respective header file must be included.
2. User-defined functions: are the functions which are created by the C programmer, so that
he/she can use it many times. It reduces complexity of a big program and optimizes the code.
Depending upon the complexity and requirement of the program, you can create as many user-
defined functions as you want.
In order to write an efficient user defined function, the programmer must familiar with the following
three elements.
C Page 67
PROGRAMMING
1 : Function Declaration. (Function Prototype).
2 : Function Call.
3 : Function Definition
A function declaration is the process of tells the compiler about a function name. Syntax
When we call any function control goes to function body and execute entire code.
Defining a function.
Defining of function is nothing but give body of function that means write logic inside function
body. Syntax return_ type function-name(parameter list) // function header.
C Page 68
PROGRAMMING
Eg: int add( int x, int y) int add( int x, int y)
{ {
int z; ( or ) return ( x + y );
z = x + y; }
return z;
When the compiler encounters functionName(); inside the main function, control of the program
jumps to void functionName()
And, the compiler starts executing the codes inside the user-defined function.
The control of the program jumps to statement next to functionName(); once all the codes inside the
function definition are executed.
Example:
C Page 69
PROGRAMMING
#include<stdio.h>
#include<conio.h>
clrsct();
defining function
c);
calling function
Output Sum:30
Example:
%d",&n1,&n2);
definition
// return statement
C Page 70
PROGRAMMING
Return Statement
C Page 71
PROGRAMMING
Syntax of return statement
For example,
return a;
return (a+b);
The return statement terminates the execution of a function and returns a value to the calling
function. The program control is transferred to the calling function after return statement.
In the above example, the value of variable result is returned to the variable sum in
the main() function.
PARAMETERS :
parameters provides the data communication between the calling function and called function.
or
C Page 72
PROGRAMMING
1 : Actual parameters.
2 : Formal parameters.
1 : Actual Parameters : These are the parameters transferred from the calling function (main
program) to the called function (function).
2 : Formal Parameters :These are the parameters transferred into the calling function (main
program) from the called function(function).
Ex: main ()
..... .
Where
PASSING PARAMETERS TO FUNCTIONS: There are two ways to pass value or data to
function in C language: call by value and call by reference. Original value is not modified in call by
value but it is modified in call by reference.
C Page 73
PROGRAMMING
The called function receives the information from the calling function through the parameters. The
variables used while invoking the calling function are called actual parameters and the variables used
in the function header of the called function are called formal parameters.
In call by value, value being passed to the function is locally stored by the function parameter in
stack memory location. If you change the value of function parameter, it is changed for the current
function only. It will not change the value of variable inside the caller method such as main(). Or
When a function is called with actual parameters, the values of actual parameters are copied into
formal parameters. If the values of the formal parametes changes in the function, the values of the
actual parameters are not changed. This way of passing parameters is called pass by value or call by
value.
Ex :
#include<stdio.h>
#include<conio.h>
C Page 74
PROGRAMMING
void swap(int ,int );
void main() {
int i,j;
scanf("%d%d",&i,&j);
printf("Before swapping:%d%d\n",i,j);
swap(i,j);
printf("After swapping:%d%d\n",i,j);
getch();
} void
swap(int a,int b)
int temp;
temp=a;
a=b;
b=temp;
Output
Before swapping: 10 20
After swapping: 10 20
2 : Pass by reference (OR) Call by Reference : In pass by reference, a function is called with
addresses of actual parameters. In the function header, the formal parameters receive the addresses of
actual parameters. Now the formal parameters do not contain values, instead they contain addresses.
Any variable if it contains an address, it is called a pointer variable. Using pointer variables, the
values of the actual parameters can be changed. This way of passing parameters is called call by
reference or pass by reference.
Ex : #include<stdio.h>
#include<conio.h>
C Page 75
PROGRAMMING
void swap(int *,int *);
void main() {
int i,j;
scanf("%d%d",&i,&j);
printf("Before swapping:%d%d\n",i,j);
swap(&i ,&j);
printf("After swapping:%d%d\n",i,j);
int temp;
temp=*a;
*a=*b;
*b=temp;
Output
Before swapping:10 20
After swapping: 20 10
C Page 76
PROGRAMMING