Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
The function in C language is also known as procedure. To perform any task, we can create function.
A function can be called many times. It provides modularity and code reusability.
Advantage of Function
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.
Code Optimization
It makes the code optimized, we don't need to write much code.
Types of Function
In built Function(Library Function)
Printf(); ,Scanf();, clrscr(); , getch();
User Defined Function
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.
Elements of User Defined Function
1. Function Declaration
2. Function Call
3. Function Definition
1.Function Declaration
a. Function Type (Return Type)
b. Function Name
c. Parameter List (Argument)
d. Terminating semicolon
Syntax –Function Declaration
Type func_name(Parameter list);
Int add(int,int);
Int add(int a,int b);
2 Function Call
Int add (int a,int b);
Main()
{
Int y;
Y=add(10,20);
Printf(“%d”,y);
}
3 Function Definition
Function Header
a Function Type
b Function Name
c Parameter List
Function Body
d Local variable declaration
e Function statements
f A Return Statement
Function Header
Type function_name(parameter_list)
Int add(int a,intb);
Int add(int,int);
Int add(int x,int y) – Function Definition
Function Body
Header
{
variable---------x
Statement Function body
Return statement….x
}
e.g.
Int message(void);
Void add(int,int);
Void add(void);
Function Declaration
Returntype func name (arguments);
Int add (int,int);
Void add (void);
Function Definition
Int add(int x,int y) ->define
{
Statements
}
Main()
{
Int ans;
Ans=add(10,20); ->Call
}
A. Actual arguments
B. Formal Arguments
Main()
{
Int ans;
ans=add(10,20); ->Actual Arguments
int add(int x,int y) ->Formal Arguments
Return Type
1. Return ;
2. Return value;
Int add(int x,int y)
{
Int c;
C=x+y;
Return c;
}
Or
Int add(int x,int y)
{
Int c;
C=x+y;
Return ;
}
Or
Int add(int x,int y)
{
Int c;
C=x+y;
If(c>10)
{Return ;}…… ……. ……
Category of Function
A . Function with arguments and return value
B. Function with no arguments and no return value
C. Function with arguments and no return value
D. Function with no arguments and return value
A . Function with arguments and return value
Ex. Int add (int x,int y)
B. Function with no arguments and no return value
void add(void)
C. Function with arguments and no return value
Void add(int x, int y)
D. Function with no arguments and return value
Int add(void)
Practical Example A. Function with arguments and return value
#include<stdio.h>
#include<conio.h>
int add(int,int); //Function Declaration
void main()
{
int a,b,sum;
clrscr();
printf("Enter first number");
scanf("%d",&a);
printf("Enter Second number");
scanf("%d",&b);
sum=add(a,b); //Function Call
printf("Sum is %d",sum);
getch();
}
//Value of Actual arguments a & b Copy in Formal arguments x,y
int add(int x,int y) // Function Definition
{
int c;
c=x+y;
return c;
//or return(x+y);
}
Function with No Arguments and No return value
#include<stdio.h>
#include<conio.h>
void add(void); //Function Declaration
void main()
{
clrscr();
add(); //Function Call
getch();
}
void add(void) //Function Definition
{
int a,b,ans;
printf("Enter First Number");
scanf("%d",&a);
printf("Enter Second Number");
scanf("%d",&b);
ans=a+b;
printf("Sum is : %d",ans);
}
Function with Arguments and No return value
Void add (int,int) //Declaration
main()
{
int a,b;
clrscr();
printf("Enter first number");
scanf("%d",&a);
printf("Enter Second number");
scanf("%d",&b);
add(a,b); //Function Call
getch();
}
//Value of Actual arguments a & b Copy in Formal arguments x,y
void add(int x,int y) // Function Definition
{
int c;
c=x+y;
Printf(“Addition is %d”,c);
}
Function with NO Arguments and return value
Void sqr (void) //Declaration
main()
{
int ans;
clrscr();
ans=sqr(); //Function Call
Printf(“Squere is %d”,ans);
getch();
}
//Value of Actual arguments a & b Copy in Formal arguments x,y
int sqr(void) // Function Definition
{
int s; or b;
Printf(“Enter a Value”);
Scanf(“ %d”,&s);
Return(s*s);
Or
b=(s*s);
Return b;
}
Nesting of Function
mul()
add()
{
……….
……..
…….
…..
Mul(); -Nesting
}
main()
{
add();
}
Example 1
#include<stdio.h>
#include<conio.h>
Int greater (int,int);
Void dis(void);
Main()
{
Clrscr();
Disp();
Getch();
}
Int greater (int x,int y)
If(x>y)
{
Return x;
}
Else
{
Return y;
}
}
Void disp(void)
{
Int a,b,ans;
Printf(“Enter First Number”);
Scanf(“%d”,&a);
Printf(“Enter Second Number”);
Scanf(“%d”,&b);
ans=greater(a,b); ->Nesting
Printf(“Greate r value is %d”,ans);
}
Example 2
#include<stdio.h>
#include<conio.h>
void func1();
void func2();
void func3();
void main()
{
clrscr();
func1();
getch();
}
void func1()
{
printf("\nIts is function 1");
func2();
}
void func2()
{
printf("\nIts is function 2");
func3();
}
void func3()
{
printf("\nIts is function 3");
}
Example 3
void italy();
void japan();
void brazil();
void main()
{
clrscr();
printf(" I am in main\n");
italy();
printf("i am finally back in main\n");
getch();
}
void italy()
{
printf("I am in italy\n");
japan();
printf("I am back in italy\n");
}
void japan()
{
printf("i am in japan\n");
brazil();
}
void brazil()
{
printf("i am in brazil\n");
}
Recursion
A function to call itself. Recursive functions are very useful to solve many mathematical problems,
such as calculating the factorial of a number, generating Fibonacci series, etc.
Int sub(int x)
{
Int i,a;
………..
………..
i=sub(a); ->Recursion
}
Program
#include<stdio.h>
#include<conio.h>
Int fact(int);
Main()
{
Int no,ans;
Clrscr();
Printf(“Enter a Number”);
Scanf(“%d”,&no);
Ans=fact(no);
Printf(“Factorial is %d”,ans);
Getch();
}
Int fact(int x)
{
Int f;
If(x==0)
{
Return 1;
}
Else
{
F=x*fact(x-1); ->Recursion
Return f;
}
}
Call by value
Original value is not modified
A copy of value is passed to the function
Call by reference
Original value is modified
An address of a value is passed to the func.
Function Call
a. Call by value b. Call by reference
Example
Void disp(int x);
main()
{
100
Int a=100; Value
Disp(a);
}
Void disp(int x) 2122 - Address
{
X=x+100;
}
Ex. void change(int num) {
printf("Before adding value inside function num=%d \n",num);
num=num+100;
printf("After adding value inside function num=%d \n", num);
}
int main() {
int x=100;
clrscr();
printf("Before function call x=%d \n", x);
change(x);//passing value in function
printf("After function call x=%d \n", x);
getch();
return 0;
}
Array
Array in C language is a collection or group of elements (data). C array is
beneficial if you have to store similar elements i.e. it is a collection of similar
datatypes
Advantage of C Array
1) Code Optimization: Less code to the access the data.
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.
Types of Array
a. One dimensional array marks[0]
b. Two dimensional array marks[1]
c. Multidimensional array marks[2]
marks[3]
A. One dimensional array marks[4]
Declaration
data_type array_name[array_size];
int marks[5];
Subscript
Two dimensional array
data_type array_name[row_no][column_no];
Example:
Int subject[2][3];
No of element=r*c
2*3=6
Initialization of one dimensional array
Int a=20; int sub[5];
sub[0] or int a[4] {10,20,30,40};
sub[1]
sub[2]
10
sub[3]
sub[4]
Sub[2]=10;
Example One dimensional Array
Main()
{
Int sub[5],I,total=0;
Printf(“Enter 5 subject no :”);
For (i=0;i<5;i++)
{
Scanf(“%d”,&sub[i]);
Total=total+sub[i];
}
Printf(“Elements are”);
For(i=0;i<5;i++)
{
Printf(“%d”,sub[i]);
}
Printf(“Total is : %d”,total”);
Getch();
}
//Addition of two array in C
#include<stdio.h>
#include<conio.h>
void main()
{
int arr1[5],arr2[5],arr3[5],i;
clrscr();
printf("Enter 5 number-First Array:\n");
for(i=0;i<5;i++)
{ scanf("%d",&arr1[i]); }
printf("Enter 5 number-Second Array:\n");
for(i=0;i<5;i++)
{ scanf("%d",&arr2[i]); }
for(i=0;i<5;i++)
{
arr3[i]=arr1[i]+arr2[i];
}
printf("Sum of Elements are\n");
for(i=0;i<5;i++)
{
printf("\t%d",arr3[i]);
}
getch();
}
Example Two dimensional Array
Main()
{
Int sub[2][3],I,j,total=0;
Printf(“Enter 6 no :”);
For (i=0;i<2;i++) ->Outer-Row
{
For (j=0;j<3;i++) ->Inner-Column
{
Scanf(“%d”,&sub[i][j]);
}
}
Printf(“Values are”);
For(i=0;i<2;i++)
{
For(j=0;i<3;i++)
{
Printf(“\t%d”,sub[i][j]);
Total=total+sub[i][j];
}
Printf(“\t%d”,total”);
Total=0;
Printf(“\n”);
}
Getch();}
Multi Dimensional Array
C allows for arrays of two or more dimensions. A two-dimensional (2D) array
is an array of arrays. A three-dimensional (3D) array is an array of arrays of
arrays.
How to Declare a Multidimensional Array in C
Example 1. int table[5][5][20];
Example 2. float arr[5][6][5][6][5];
In Example 1: int designates the array type integer.
table is the name of our 3D array.
Our array can hold 500 integer-type elements. This number is reached by
multiplying the value of each dimension. In this case: 5x5x20=500.
In Example 2: Array arr is a five-dimensional array.
It can hold 4500 floating-point elements (5x6x5x6x5=4500).
Can you see the power of declaring an array over variables? When it comes
to holding multiple values in C programming, we would need to declare
several variables. But a single array can hold thousands of values.
A 3D array is essentially an array of arrays of arrays: it's an array or collection
of 2D arrays, and a 2D array is an array of 1D array.
The conceptual syntax for 3D array is this:
data_type array_name[table][row][column];
If you want to store values in any 3D array point first to table number, then
row number, and lastly to column number.
Initializing a 3D Array in C
#include<stdio.h>
#include<conio.h>
void main()
{int i, j, k;
int arr[3][3][3]=
{
{
{11, 12, 13},
{14, 15, 16},
{17, 18, 19}
},
{
{21, 22, 23},
{24, 25, 26},
{27, 28, 29}
},
{
{31, 32, 33},
{34, 35, 36},
{37, 38, 39}
},
};clrscr();
printf(":::3D Array Elements:::\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
printf("%d\t",arr[i][j][k]);
}
printf("\n");
}
printf("\n");
}
getch();
}
Storing Values in a Continuous Location Using a Loop
void main()
{
int i, j, k, x=1;
int arr[3][3][3];
clrscr();
printf(":::3D Array Elements:::\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
arr[i][j][k] = x;
printf("%d\t",arr[i][j][k]);
x++;
}
printf("\n");
}
printf("\n");
}
getch();
}
Passing Array to Function in C
To reuse the array operation, we can create functions that receives array as
argument. To pass array in function, we need to write the array name only in
the function call.
functionname(arrayname);//passing array
No. ways to declare function that receives array as argument.
return_type function(type arrayname[])
return_type function(type arrayname[SIZE])
#include <stdio.h>
void display(int age)
{
printf("%d", age);
}
int main()
{ int ageArray[] = { 2, 3, 4 };
display(ageArray[2]); //Passing array element ageArray[2] only.
return 0;}
Output
4
Passing Arrays as Function Arguments in C
Void disp(int[],int);
Void main()
{
Int arr[5],I;
Printf(“Enter the five value in an Array”);
For(i=0;i<5;i++)
{
Scanf(“%d”,&arr[i]);
}
Disp(arr,5);
Getch();
}
Void disp(int ar[],int s)
{
Int I,sum=0;
Printf(“Elements are:”);
For(i=0;i<5;i++)
{
Printf(“%d”,ar[i]);
Sum=sum+ar[i];
}
Printf(“Total=%d”,sum);
}
Pass two-dimensional arrays to a function
#include <stdio.h>
void displayNumbers(int num[2][2]);
int main()
{
int num[2][2], i, j;
printf("Enter 4 numbers:\n");
for (i = 0; i < 2; ++i)
for (j = 0; j < 2; ++j)
scanf("%d", &num[i][j]);
// passing multi-dimensional array to displayNumbers function
displayNumbers(num);
return 0;
}
void displayNumbers(int num[2][2])
{
// Instead of the above line,
// void displayNumbers(int num[][2]) is also valid
int i, j;
printf("Displaying:\n");
for (i = 0; i < 2; ++i)
for (j = 0; j < 2; ++j)
printf("%d\n", num[i][j]);
}
Arrays of Strings in C
Array of characters is called a string. A string is terminated by a null character /0
There are two ways to declare string in c
1. By char array 2. By string literal
A M A N \0
Char name[5][10];
Char name[MAX] [LENGTH]; O M \0
R A M \0
No. of string Length of each string
#include<stdio.h>
#include<conio.h>
void main()
{
Char name[10];
Int I;
Printf(“Enter a string”);
Scanf(“%s”,name)
While(name[i]!=‘\0’)
{
Printf(“%c is trored at %u”,name[i],&name[i]);
i++;
}
Getch();
}
Char name [3][10]= {“amit” , “sumi” , “aman”};
Name[0] amit name[1] sumit name[2] aman
Name[1][1] u –If you want a single character from string then we need to use both
subscript else not.
Example
#include<stdio.h>
#include<conio.h>
Void main()
{
Char ch [3][10],I;
Printf(“Enter 3 string”);
For(i=0;i<3;i++);
{
Scanf(“%s”,&ch[i]);
}
Printf(“Strings are “);
For(i=0;i<3;i++)
{
Printf(“%s”,ch[i]);
}
Getch();
}
C gets() and puts() functions
The gets() function reads string from user and puts() function prints the string. Both
functions are defined in <stdio.h> header file.
void main(){
char name[50];
clrscr();
printf("Enter your name: ");
gets(name); //reads string from user
printf("Your name is: ");
puts(name); //displays string
getch(); }
void main(){
char name[50];
clrscr();
printf("Enter your name: ");
gets(name); //reads string from user
printf("Your name is: ");
puts(name); //displays string
getch(); }
Strlen() function
The strlen() function returns the length of the given string. It doesn't count null character
'\0'.
Syntax: strlen(string variable); or variable name= strlen(string variable);
#include <stdio.h>
void main()
{
char ch[20]={‘i', ‘n', ‘n', ‘o', ‘z', ‘a', ‘n', ‘t', '\0'};
printf("Length of string is: %d",strlen(ch));
}
Output:
Length of string is: 8
#include<stdio.h>
#include<conio.h>
#include<string.h>
Void main()
{
Int I;
Char name[10];
Printf(“Enter a string”);
Scanf(“%s”,name);
i=strlen(name);
Printf(“String length is %d”,i);
Getch();}
Strcpy() function
The strcpy(destination, source) function copies the source string in destination.
void main()
{
char ch[20]={‘i', ‘n', ‘n', ‘o', ‘z', ‘a', ‘n', ‘t', '\0'};
char ch2[20];
strcpy(ch2,ch);
printf("Value of second string is: %s",ch2);
}
Output:
Value of second string is: innozant
Void main()
{
Char name[20];
Strcpy(name,”kanika”);
Printf(“copied string are %s”,name);
Getch();
Strcat() function
The strcat(first_string, second_string) function concatenates two strings and result is
returned to first_string.
Syntax : strcat(destination string,source string);
#include <stdio.h>
void main()
{
char ch[10]={'h', 'e', 'l', 'l', 'o', '\0'};
char ch2[10]={'c', '\0'};
strcat(ch,ch2);
printf("Value of first string is: %s",ch);
}
Output:
Value of first string is: helloc
Void main()
{
Char str1[]=“This is “;
Char str2[]=“innozant”;
Printf(“First string is %s”,str1);
Printf(“First string is %s”,str2);
Strcat(str1,str2);
Printf(“Final string is %s”,str1);
Getch();
}
Void main()
{
Char str1[]=“This is “;
Char str2[]=“innozant”;
Printf(“First string is %s”,str1);
Printf(“First string is %s”,str2);
Strcat(str1,str2,4);
Printf(“Final string is %s”,str1);
Getch();
}
Output:This is inno
Strcmp() function
The strcmp(first_string, second_string) function compares two string and returns 0 if
both strings are equal.
#include <stdio.h>
void main()
{
char str1[20],str2[20];
printf("Enter 1st string: ");
gets(str1);//reads string from console
printf("Enter 2nd string: ");
gets(str2);
if(strcmp(str1,str2)==0)
printf("Strings are equal");
else
printf("Strings are not equal");
}
Output:
Enter 1st string: hello Enter 2nd string: hello
Strings are equal
Void main()
{
Int v;
Char str1[10],str2[10];
Printf(“Enter first string”);
Scanf(“%s”,str1);
Printf(“Enter first string”);
Scanf(“%s”,str2);
V=strcmp(str1,str2);
If(v<0)
{
Printf(“str 1 is less than str2”);
}
Else if(v>0)
{
Printf(“str1 is greater tha str2”);
}
Else
{
Printf(“str1 is equal to str2”);
}
Getch();
}
Strrev() function
The strrev(string) function returns reverse of the given string. Let's see a simple example
of strrev() function.
#include<stdio.h>
#include<conio.h>
void main(){
char str[20];
clrscr();
printf("Enter string: ");
gets(str);//reads string from console
printf("String is: %s",str);
printf("\nReverse String is: %s",strrev(str));
getch();
}
Output:
Enter string: innozant String is: innozant Reverse String is: tnazonni
……………………………………………………………………………………..
Void main()
{
Char name[10];
Printf(“Enter a string”);
Scanf(“%s”,name);
Strrev(name);
Printf(“Reverse of entered string %s”,name);
Getch();
}
Strlwr()
The strlwr(string) function returns string characters in lowercase. Let's see a simple
example of strlwr() function.
#include<stdio.h>
#include<conio.h>
void main(){
char str[20];
clrscr();
printf("Enter string: ");
gets(str);//reads string from console
printf("String is: %s",str);
printf("\nLower String is: %s",strlwr(str));
getch();
}
Output:
Enter string: INNOzant String is: INNOzant Lower String is: innozant
Strupr() function
The strupr(string) function returns string characters in uppercase. Let's see a simple
example of strupr() function.
#include<stdio.h>
#include<conio.h>
void main(){
char str[20];
clrscr();
printf("Enter string: ");
gets(str);//reads string from console
printf("String is: %s",str);
printf("\nUpper String is: %s",strupr(str));
getch();
}
Output:
Enter string: innozant String is: innozant Upper String is: INNOZANT
1) Pointer reduces the code and improves the performance, it is used to retrieving
strings, trees etc. and used with arrays, structures and functions.
2) We can return multiple values from function using pointer.
3) It makes you able to access any memory location in the computer's memory.
Void main()
{
Syntax
Int a=100;
Datatype * Pointer name Int *p; P=&a;
Int *p; D referencing concept printf(“Value of A %d”,a);
Int b=100; printf(“Value of A %d”,*p);
P=&b; getch();
Printf(“%d”,*p); }
Int a=100;
Int *p;
void main(){
int number=50;
int *p;
clrscr();
p=&number;//stores the address of number variable
printf("Address of number variable is %x \n",&number);
printf("Address of p variable is %x \n",p);
printf("Value of p variable is %d \n",*p);
getch();
}
Main()
{
Int a=100;
Int *p;
P=&a;
Printf(“%d”,a); 100
Printf(“%d”,*p); 100
Printf(“%p”,&a); 2323
Printf(“%p”,p); 2323
Printf(“%p”,&p); 3234
Pointer Program to swap 2 numbers without using 3rd variable
#include<stdio.h>
#include<conio.h>
void main(){
int a=10,b=20,*p1=&a,*p2=&b;
clrscr();
printf("Before swap: *p1=%d *p2=%d",*p1,*p2);
*p1=*p1+*p2;
*p2=*p1-*p2;
*p1=*p1-*p2;
printf("\nAfter swap: *p1=%d *p2=%d",*p1,*p2);
getch(); }
Output :Before swap: *p1=10 *p2=20 After swap: *p1=20 *p2=10
Array of Pointers
Main()
{
Int marks[]={10,20,30};
Int *point[3],i;
For(i=0;i<3;i++)
{
Printf(“%d”,marks[i]);
point[i]=&marks[i];
}
For(i=0;i<3;i++)
{
Printf(“%d”,*point[i]);
}
Getch();
}
Increment and Decrement on Pointer
Incrementing a pointer is used in array because it is contiguous memory location.
Moreover, we know the value of next location.
#include <stdio.h>
void main(){
int number=50;
int *p;//pointer to int
p=&number;//stores the address of number variable
printf("Address of p variable is %u \n",p);
P++ or p=p+1; / p- - or p=p-1;
printf("After increment: Address of p variable is %u \n",p);
}
C Pointer Addition
We can add a value to the pointer variable.
#include <stdio.h>
void main(){
int number=50;
int *p;//pointer to int
p=&number;//stores the address of number variable
printf("Address of p variable is %u \n",p);
p=p+3; //adding 3 to pointer variable // p=p-3 –subtracting 3 from pointer variable
printf("After adding 3: Address of p variable is %u \n",p);
}
Pointer to Pointer
**p1 *p Int a=100
a
3160 3156 2156
#include<stdio.h>
#include<conio.h>
Void main()
Int a=100;
Int *p
Int **p1;
P=&a;
P1=&p;
Printf(“Value of A %d”,a); -100
Printf(“%d”,*p); -100
Printf(“%d”,**p1); -100
Printf(“%u”,*p1 -2156
Getch();
}
**p1 *p Int a=100
a
3160 3156 2156
#include<stdio.h>
int main(){
int number=50;
int *p;//pointer to int
int **p2;//pointer to pointer
p=&number;//stores the address of number variable
p2=&p;
printf("Address of number variable is %x \n",&number);
printf("Address of p variable is %x \n",p);
printf("Value of *p variable is %d \n",*p);
printf("Address of p2 variable is %x \n",p2);
printf("Value of **p2 variable is %d \n",*p);
return 0;
}
Address of number variable is fff4
Address of p variable is fff4
Value of *p variable is 50
Address of p2 variable is fff2
Value of **p variable is 50
Passing pointer to Function or Call by reference or Pointer as a function argument or
A function that return multiple values
#include<stdio.h>
#include<conio.h>
Void swap(int *,int *);
Main()
{
Int a,b;
Printf(“Enter value for A”);
Scanf(“%d”,&a);
Printf(“Enter value for B”);
Scanf(“%d”,&b);
Printf(“Values before swaping”);
Printf(“Value for A %d”,a);
Printf(“Value for B %d”,b);
Swap(&a,&b);
Printf(“Values after swaping”);
Printf(“Value for A %d”,a);
Printf(“Value for B %d”,b);
Getch();
}
Void swap(int x,int y)
{
Int t;
t=*x;
*x=*y;
*y=t;
}
Pointer to Function in C
Void add(int x,int y)
Syntax: <function return type> (<* pointer name>) (function argument type)
Ex. Void (*ptr) (int,int);
Syntax : pointer_name =&function name;
or
Pointer_name=function_name;
Ptr=&add;
Or
Ptr=add;
Referencing:
Int a=100;
Int *p;
P=&a; -Referencing (To hold the address of a variable)
Dereferencing
Printf(“Value of A %d”,*p);
Printf(“Value of A %d”,*p); Syntax is wrong in case of void pointer
*p –Wrong *(int *) p-Right
Printf(“Value of A %d”,*(int*)p);
#include<stdio.h>
#include<conio.h>
Main()
Int *p;
Int arr[5],I,total=0;
Printf(“Enter 5 Elements:”);
For(i=0;i<5;i++)
{
scanf(“%d”,&arr[i]);
}
P=arr;
Printf(“Elements are:”);
For(i=0;;i<5;i++)
{
Printf(“%d”,*p);
Total=total+*p;
P++;
}
Printf(“total=%d”,total);
Getch();
}
#include<stdio.h> int main(){ int num = NULL; printf("Value of Number ", ++num); return 0; }
Above program will never print 1, so keep in mind that NULL should be used only when you are dealing with pointer
Int main() Int main()
{ {
Int *ptr=NULL; Int num=NULL;
Printf(“The value of ptr is %u”,ptr); Printf(“Value of Number”,++num);
Return 0; Return 0;
Above program will never print 1,so keep in
Mind that NULL should be used only when
You are dealing with pointer
Dynamic Memory Allocation
#include<stdlib.h>
Memory Allocation
Contiguous Memory Allocation
Reallocation
malloc() function in C
The malloc() function allocates single block of requested memory.
It doesn't initialize memory at execution time, so it has garbage value
initially.It returns NULL if memory is not sufficient.
The syntax of malloc() function is given below: void * malloc(size in byte) –
Declare in header file –This malloc function returns a pointer which point the
first byte of block created.
1.ptr=(cast-type*)malloc(byte-size)
int main(){
int n,i,*ptr,sum=0;
printf("Enter number of elements: ");
scanf("%d",&n);
ptr=(int*)malloc(n*sizeof(int)); //memory allocated using malloc
if(ptr==NULL)
{
printf("Sorry! unable to allocate memory");
exit(0);
}
printf("Enter elements of array: ");
for(i=0;i<n;++i)
{
scanf("%d",ptr+i);
sum+=*(ptr+i);
}
printf("Sum=%d",sum);
free(ptr);
return 0; }
calloc() function in C
The calloc() function allocates multiple block of requested memory.
It initially initialize all bytes to zero.
It returns NULL if memory is not sufficient.
The syntax of calloc() function is given below:
1.ptr=(cast-type*)calloc(number, byte-size)
int main(){
int n,i,*ptr,sum=0;
printf("Enter number of elements: ");
scanf("%d",&n);
ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc
if(ptr==NULL)
{
printf("Sorry! unable to allocate memory");
exit(0);
}
printf("Enter elements of array: ");
for(i=0;i<n;++i)
{
scanf("%d",ptr+i);
sum+=*(ptr+i);
}
printf("Sum=%d",sum);
free(ptr);
return 0;
}
Realloc() Function
Syntax: void *realloc(void *ptr,New size in bytes);
Syntax use in program : pointer=(cast_type*)realloc(ptr,new size in
byte);
#include<stdlib.h>
Main()
{
Int s,*p,*ptr,I,sum=0,*q;
Printf(“Enter size fro array”);
Scanf(“%d”,&s);
Ptr=(int*)malloc(s*sizeof(int));
P=ptr;
Printf(“Memory allocated %u”,ptr);
If(ptr==NULL)
{
Printf(“out of memory);
Exit(0);}
Printf(“Enter %d elements”,s);
For(i=1;i<=s;i++)
{
Scanf(“%d”,ptr);
Sum=sum+*ptr;
Ptr++;
}
Printf(“Elements are:”);
For(i=1;i<=s;i++)
{
Printf(“%d”,*p);
P++;
}
Printf(“Addition is %d”,sum);
Printf(“Enter new size for array”);
Scanf(“%d”,&s);
Ptr=(int*)realloc(ptr,s*sizeof(int));
If(ptr==NULL)
{
Printf(“out of memory”);
Exit(0);
}
Printf(“Reallocated memory %u”,ptr);
Q=ptr;
Printf(“Enter %d elements”,s);
For(i=i<=s;i++)
{
Scanf(“%d”,ptr);
Sum=sum+*ptr;
Ptr++;
}
Printf(“Elements are “);
For(i=1;i<=s;i++)
{
Printf(“%d”,*q);
Q++;
}
Printf(“Addition is %d”,sum);
Getch();
}
File Handling in c language is used to open, read, write, search or close file. It is used for
permanent storage.
It will contain the data even after program exit. Normally we use variable or array to store
data, but data is lost after program exit. Variables and arrays are non-permanent storage
medium whereas file is permanent storage medium.
Opening File: fopen() file_pointer=fopen(“filename”,”mode”)
A.File pointer b.File Name c.Mode
The fopen() function is used to open a file. The syntax of fopen() function is
1.FILE *fopen( const char * filename, const char * mode );
2.FILE *fp; fp=fopen(“karan”,”r”);
Closing File: fclose()
The fclose() function is used to close a file. The syntax of fclose() function is given below:
1.int fclose( FILE *fp );
2.Fclose(fp);
The fprintf() function is used to write set of characters into file. It sends formatted output
to a stream.
Syntax:
1.int fprintf(FILE *stream, const char *format [, argument, ...])
1.#include <stdio.h>
2.main(){
3. FILE *fp;
4. fp = fopen("file.txt", "w");//opening file
5. fprintf(fp, "Hello file by fprintf...\n");//writing data into file
6. fclose(fp);//closing file
7.}
The fscanf() function is used to read set of characters from file. It reads a word from
the file and returns EOF at the end of file.
Syntax:
1.int fscanf(FILE *stream, const char *format [, argument, ...])
#include <stdio.h>
main(){
FILE *fp;
char buff[255];//creating char array to store data of file
fp = fopen("file.txt", "r");
while(fscanf(fp, "%s", buff)!=EOF){
printf("%s ", buff );
}
fclose(fp); } Output : Hello file by fprintf
Storing Employee Information
1.#include <stdio.h>
2.void main()
3.{
4. FILE *fptr;
5. int id;
6. char name[30];
7. float salary;
8. fptr = fopen("emp.txt", "w+");/* open for writing */
9. if (fptr == NULL)
10. {
11. printf("File does not exists \n");
12. return;
13. }
14. printf("Enter the id\n");
15. scanf("%d", &id);
16. fprintf(fptr, "Id= %d\n", id);
17. printf("Enter the name \n");
18. scanf("%s", name);
19. fprintf(fptr, "Name= %s\n", name);
20. printf("Enter the salary\n");
21. scanf("%f", &salary);
22. fprintf(fptr, "Salary= %.2f\n", salary);
23. fclose(fptr);
24.}
Now open file from current directory. For windows operating system, go to
TC\bin directory, you will see emp.txt file. It will have all information you put
there while execute the program.
C fputc() and fgetc()
The fputc() function is used to write a single character into file. It outputs a character to a
stream.
Syntax: int fputc(int c, FILE *stream)
#include <stdio.h>
main(){
FILE *fp;
fp = fopen("file1.txt", "w");//opening file
fputc('a',fp);//writing single character into file
fclose(fp);//closing file
}
The fgetc() function returns a single character from the file. It gets a character from the stream. It
returns EOF at the end of file.
Syntax:int fgetc(FILE *stream)
void main(){
FILE *fp;
char c;
clrscr();
fp=fopen("myfile.txt","r");
while((c=fgetc(fp))!=EOF){
printf("%c",c);
}
fclose(fp);
getch();
}
C fputs() and fgets()
The fputs() and fgets() in C programming are used to write and read string from
stream. Let's see examples of writing and reading file using fgets() and fgets()
functions.
Writing File : fputs() function
The fputs() function writes a line of characters into file. It outputs string to a stream.
Syntax: int fputs(const char *s, FILE *stream)
#include<stdio.h>
#include<conio.h>
void main(){
FILE *fp;
clrscr();
fp=fopen("myfile2.txt","w");
fputs(“Welcome to innozant",fp);
fclose(fp);
getch();
}
Reading File : fgets() function
The fgets() function reads a line of characters from file. It gets string from a stream.
Syntax: char* fgets(char *s, int n, FILE *stream)
1.#include<stdio.h>
2.#include<conio.h>
3.void main(){
4.FILE *fp;
5.char text[300];
6.clrscr();
7.
8.fp=fopen("myfile2.txt","r");
9.printf("%s",fgets(text,200,fp));
10.
11.fclose(fp);
12.getch();
13.}
C fseek() function
The fseek() function is used to set the file pointer to the specified offset. It is used to write data into file
at desired location. There are 3 constants used in the fseek() function for whence: SEEK_SET, SEEK_CUR
and SEEK_END.
Syntax:int fseek(FILE *stream, long int offset, int whence)
void main(){
FILE *fp;
fp = fopen("myfile.txt","w+");
fputs("This is Innozant", fp);
fseek( fp, 7, SEEK_SET );
fputs(“Deepak Kumar", fp);
fclose(fp);
}