Pages

Monday, 9 March 2020

Program for Largest Number among three numbers

Program for Largest Number among three numbers


/* c program to find largest number among 3 numbers*/
#include <stdio.h> 
int main()
{
    int a,b,c;
    int largest;
    printf("Enter three numbers :");
    scanf("%d%d%d",&a,&b,&c);
    if(a>b && a>c)        
        largest=a;
    else if(b>a && b>c)       
        largest=b;
    else
        largest=c;
    printf("Largest number is = %d",largest); 
    return 0;
}


Program to get ASCII of a character in C

Program to get ASCII of a character in C

#include <stdio.h>
int main()
{
char ch;
printf("Enter the character: ");   //input character
scanf("%c",&ch);
printf("ASCII is = %d\n", ch);
return 0;
}

Saturday, 7 March 2020

File Handling in C

File Input/Output : C files I/O functions handle data on a secondary storage device, such as a hard disk.

C can handle files as Stream-oriented data (Text) files, and System oriented data (Binary) file.

In C language, we use a structure pointer of file type to declare a file. FILE *fp;

C provides a number of functions that helps to perform basic file operations. 

Following are the functions.

Function

Description

fopen()

create a new file or open a existing file

fclose()

closes a file

getc()

reads a character from a file

putc()

writes a character to a file

fscanf()

reads a set of data from a file

fprintf()

writes a set of data to a file

getw()

reads a integer from a file

putw()

writes a integer to a file

fseek()

set the position to desire point

ftell()

gives current position in the file

rewind()

set the position to the beginning point

C File Operations : Five major operations can be performed on file are:  

  1. Creation of a new file. 
  2. Opening an existing file. 
  3. Reading data from a file. 
  4. Writing data in a file.
  5. Closing a file.

Opening a File or Creating a File 

The fopen() function is used to create a new file or to open an existing file.

General Syntax:

*fp = FILE *fopen(const char *filename, const char *mode);

Here, *fp is the FILE pointer (FILE *fp), which will hold the reference to the opened(or created) file.

Filename is the name of the file to be opened and mode specifies the purpose of opening the file. Mode can be of following types.

Mode

Description

r

opens a text file in reading mode

w

opens or create a text file in writing mode.

a

opens a text file in append mode

r+

opens a text file in both reading and writing mode

w+

opens a text file in both reading and writing mode

a+

opens a text file in both reading and writing mode

rb

opens a binary file in reading mode

wb

opens or create a binary file in writing mode

ab

opens a binary file in append mode

rb+

opens a binary file in both reading and writing mode

wb+

opens a binary file in both reading and writing mode

ab+

opens a binary file in both reading and writing mode

Closing a File

The fclose() function is used to close an already opened file.

Syntax :  int fclose( FILE *fp);

Here fclose() function closes the file and returns zero on success, or EOF if there is an error in closing the file. 

This EOF is a constant defined in the header file stdio.h. 

Input/Output operation on File

Example:

#include<stdio.h>

int main()

{

    FILE *fp;

    char ch;

    fp = fopen("one.txt", "w");

    printf("Enter data...");

while( (ch = getchar()) != EOF)

{

        putc(ch, fp);

    }

    fclose(fp);

    fp = fopen("one.txt", "r"); 

    while( (ch = getc(fp)! = EOF)

    printf("%c",ch);          // closing the file pointer

    fclose(fp);

return 0;

}

Reading and Writing to File using fprintf() and fscanf()

Example:

#include<stdio.h>

struct emp

{

    char name[10];

int age;

};

void main()

{

    struct emp e;

    FILE *p,*q;

    p = fopen("one.txt", "a");

    q = fopen("one.txt", "r");

    printf("Enter Name and Age:");

    scanf("%s %d", e.name, &e.age);

    fprintf(p,"%s %d", e.name, e.age);

    fclose(p);

    do

    {

        fscanf(q,"%s %d", e.name, e.age);

        printf("%s %d", e.name, e.age);

    }

while(!feof(q));

}

In this program, we have created two FILE pointers and both are referring to the same file but in different modes.

fprintf() function directly writes into the file, while fscanf() reads from the file, which can then be printed on the console using standard printf() function.

Reading and Writing in a Binary File : A Binary file is similar to a text file, but it contains only large numerical data. The Opening modes are mentioned in the table for opening modes above.

fread() and fwrite() functions are used to read and write is a binary file.

Syntax: 

fwrite(data-element-to-be-written, size_of_elements, number_of_elements, pointer-to-file);

fread() is also used in the same way, with the same arguments like fwrite() function.

Below mentioned is a simple example of writing into a binary file

Example:

const char *mytext = "The quick brown fox jumps over the lazy dog";   

FILE *bfp= fopen("test.txt", "wb");   

if (bfp)

{     

    fwrite(mytext, sizeof(char), strlen(mytext), bfp);     

fclose(bfp);  

}

fseek(), ftell() and rewind() functions

fseek() : It is used to move the reading control to different positions using fseek function.

ftell() : It tells the byte location of current position of cursor in file pointer.

rewind() : It moves the control to beginning of the file.

 

Pointers in C

Pointer : A Pointer in C language is a variable which holds the address of another variable of same data type. 
Sytnax:
datatype *variable_name;

Example:
int  *salary;        //integer type pointer
char  *alphabet;    // character type pointer

Concept of Pointers : When a variable is declared in a c program, system allocates a location to hold the assigned value. This location has its own address number. A pointer can also be used to refer another pointer, function. 
A pointer can be incremented/decremented, i.e., to point to the next/ previous memory location.

 Operators that are used with Pointers

"Address of" (&) Operator

"Value at Address" (*) Operator

Example:
int a=10;
int *p;        // declaring integer type pointer ‘p’
p=&a;       // assigning address of ‘a’ to pointer ‘p’
   
printf(‘’%d’’,&p);  // print address of ‘p’ that is 3002
printf(“%d”,*p);    // print the value of ‘a’ that is 10

Benefits of pointers:
1. Pointers allow passing of arrays and strings to functions more efficiently.
2. Pointers make it possible to return more than one value from the function.
3. Pointers reduce the length and complexity of a program.
4. Pointers increase the processing speed.
5. Pointers save the memory.
Example:
#include<stdio.h>
int main ()
{
int n = 20, *ptr;  
ptr = &n;        /
printf(Address of n variable: %d\n, &n ); 
printf("Address stored in ptr variable: %d\n", ptr ); 
printf("Value of *pntr variable: %d\n", *ptr );
return 0;
}
Example:
int i = 12, *ip = &i;
double d = 2.3, *dp = &d;
char ch = 'a', *cp = &ch;
Suppose the address of id and ch are 100020003000 respectively, therefore ipdp and cp are at 100020003000 initially.

Pointer Arithmetic on Integers

ip = ip + 1

ip = ip + 1 = 1000 + 1*4 = 1004

ip++ or ++ip

ip++ = ip + 1 = 1004 + 1*4 = 1008

ip = ip + 5

ip = ip + 5 = 1008 + 5*4 = 1028

ip = ip - 2

ip = ip - 2 =1028 - 2*4 = 1020

ip-- or --ip

ip = ip + 2 = 1020 + 2*4 = 1028


Pointer Arithmetic on Float

dp + 1

dp = dp + 1 =2000 + 1*8 = 2008

dp++ or ++dp

dp++ = dp+1 = 2008+1*8 = 2016

dp = dp + 5

dp = dp + 5 = 2016+5*8 =2056

dp = dp - 2

dp = dp - 2 = 2056-2*8 = 2040

dp-- or --dp

dp = dp - 1 = 2040-1*8 = 2032

Pointer Arithmetic on Characters

cp + 1

cp = cp + 1 = 3000 + 1*1 = 3001

cp++ or ++cp

cp = cp + 1 = 3001 + 1*1 = 3002

cp = cp + 5

cp = cp + 5 = 3002 + 5*1 = 3007

cp = cp - 2

cp = cp + 5 = 3007 - 2*1 = 3005

cp-- or --cp

cp = cp + 2 = 3005 - 1*1 = 3004


Pointer to Pointer
Syntax:
data_type **p;

Example:
int a= 10;
int *p = &a;
int **q = &p;
Here p is of type (int *) or pointer to int, q is of type (int **) or pointer to pointer to int.
**q =*(*q)     // both are same
Example:
#include<stdio.h>
int main()
{
    int a = 10;
    int *p = &a;
    int **q = &p;
    printf("Value of a = %d\n\n", a); 
    printf("Address of a = %u\n", &a);
    printf("Value of p = %d\n\n", p);
    printf("Address of p = %u\n", &p);
    printf("Value of q = %d\n\n", q);
    printf("Value of *q = value of p = %d\n", *q);
    printf("Value of **q = value of a = %d\n\n", **q);
   return 0;
}

Pointer to Array

Example:
#include <stdio.h>
int main()
{
    int i;
    int a[5] = {1, 2, 3, 4, 5};
    int *p = a;           // same as int *p = &a[0]
    for (i = 0; i < 5; i++)
    {
        printf("%d", *p);
        p++;
    }
    
return 0;
}

Note: *(a+i)  is same as  a[i]

Pointer to Multidimensional Array
generalized form for using pointer with multidimensional arrays.

*(*(a + i) + j) which is same as, a[i][j]

Pointer and Character strings
Pointer can also be used to create strings. Pointer variables of char type are treated as string.
char *str = "HelloWorld"; 
Or
char *str;
str = "HelloWorld";

Pointers as Function Argument
Example: 
#include <stdio.h>
void swap(int *a, int *b);
int main()
{
    int x = 10, y = 20;
    printf("x = %d\n", x);
    printf("y = %d\n\n", y);
    swap(&x, &y);                //passing address 
    printf("After Swapping:\n\n");
    printf("x = %d\n", x);
    printf("y = %d", y);
return 0;
}
void swap(int *a, int *b)
{
    int t;
    t = *a;
   *a = *b;
b = t;
}

Program for Largest Number among three numbers

Program for Largest Number among three numbers /* c program to find largest number among 3 numbers*/ #include <stdio.h>   in...