Total Pageviews

Tuesday, 15 September 2015

C Programming Arrays [1.0.14]


In C programming, one of the frequently arising problem is to handle similar types of data. For example: If the user want to store marks of 100 students. This can be done by creating 100 variable individually but, this process is rather tedious and impracticable. These type of problem can be handled in C programming using arrays.
An array is a sequence of data item of homogeneous value(same type).
Arrays are of two types:
  1. One-dimensional arrays
  2. Multidimensional arrays( will be discussed in next chapter )

Declaration of one-dimensional array

data_type array_name[array_size];

For example:
int age[5];
Here, the name of array is age. The size of array is 5,i.e., there are 5 items(elements) of array age. All element in an array are of the same type (int, in this case).

Array elements

Size of array defines the number of elements in an array. Each element of array can be accessed and used by user according to the need of program. For example:
int age[5];
Elements of arrays in C.
Note that, the first element is numbered 0 and so  on.
Here, the size of array age is 5 times the size of int because there are 5 elements.
Suppose, the starting address of age[0] is 2120d and the size of int be 4 bytes. Then, the next address (address of a[1]) will be 2124d, address of a[2] will be 2128d and so on.

Initialization of one-dimensional array:

Arrays can be initialized at declaration time in  this source code as:
int age[5]={2,4,34,3,4};
It is not necessary to define the size of arrays during initialization.
int age[]={2,4,34,3,4};
In this case, the compiler determines the size of array by calculating the number of elements of an array.
Initialization of one-dimensional arrays in C programming

Accessing array elements

In C programming, arrays can be accessed and treated like variables in C.
For example:
scanf("%d",&age[2]);
/* statement to insert value in the third element of array age[]. */

scanf("%d",&age[i]);
/* Statement to insert value in (i+1)th element of array age[]. */
/* Because, the first element of array is age[0], second is age[1], ith is age[i-1] and (i+1)th is age[i]. */

printf("%d",age[0]);
/* statement to print first element of an array. */

printf("%d",age[i]);
/* statement to print (i+1)th element of an array. */

Example of array in C programming


/* C program to find the sum marks of n students using arrays */

#include <stdio.h>
int main(){
     int marks[10],i,n,sum=0;
     printf("Enter number of students: ");
     scanf("%d",&n);
     for(i=0;i<n;++i){
          printf("Enter marks of student%d: ",i+1);
          scanf("%d",&marks[i]);
          sum+=marks[i];
     }
     printf("Sum= %d",sum);
return 0;
}

Output
Enter number of students: 3
Enter marks of student1: 12
Enter marks of student2: 31
Enter marks of student3: 2
sum=45

Important thing to remember in C arrays

Suppose, you declared the array of 10 students. For example: arr[10]. You can use array members from arr[0] to arr[9]. But, what if you want to use element arr[10]arr[13] etc. Compiler may not show error using these elements but, may cause fatal error during program execution.


Next C Post

C String [1.0.13]

  • C Strings are nothing but array of characters ended with null character (‘\0’).
  • This null character indicates the end of the string.
  • Strings are always enclosed by double quotes. Whereas, character is enclosed by single quotes in C.

Example for C string:


  • char string[20] = { ‘p’ , ’a’ , ‘r’ , ‘t’ , ‘h’ , ‘m’ , ‘a’ , ‘k’ , ‘a’ , ’d’ , 'i’ , ‘y’ , 'a’ , ‘\0’}; (or)
  • char string[20] = “parth","makadiya”; (or)
  • char string []    = “parthmakadiya”;
  • Difference between above declarations are, when we declare char as “string[20]“, 20 bytes of memory space is allocated for holding the string value.
  • When we declare char as “string[]”, memory space will be allocated as per the requirement during execution of the program.

Example program for C string:




#include <stdio.h>

int main ()
{
   char string[20] = "parthmakadiya.blogspot.com";

   printf("The string is : %s \n", string );
   return 0;
}                                                                                                                              .
Output:
                        parthmakadiya.blogspot.com                                                                                                                      .


C String functions:
  • String.h header file supports all the string functions in C language. All the string functions are given below.
  • Click on each string function name below for detail description and example programs.
S.no
String functions
Description
1strcat ( ) Concatenates str2 at the end of str1.
2strncat ( ) appends a portion of string to another
3strcpy ( ) Copies str2 into str1
4strncpy ( ) copies given number of characters of one string to another
5strlen ( ) gives the length of str1.
6strcmp ( ) Returns 0 if str1 is same as str2. Returns <0 if strl < str2. Returns >0 if str1 > str2.
7strcmpi_(.) Same as strcmp() function. But, this function negotiates case.  “A” and “a” are treated as same.
8strchr ( ) Returns pointer to first occurrence of char in str1.
9strrchr ( ) last occurrence of given character in a string is found
10strstr ( ) Returns pointer to first occurrence of str2 in str1.
11strrstr ( ) Returns pointer to last occurrence of str2 in str1.
12strdup ( ) duplicates the string
13strlwr ( ) converts string to lowercase
14strupr ( ) converts string to uppercase
15strrev ( ) reverses the given string
16strset ( ) sets all character in a string to given character
17strnset ( ) It sets the portion of characters in a string to given character
18strtok ( ) tokenizing given string using delimiter




Next C Post

C - Functions [1.0.12]


A function is a group of statements that together perform a task. Every C program has at least one function, which is main(), and all the most trivial programs can define additional functions.

You can divide up your code into separate functions. How you divide up your code among different functions is up to you, but logically the division usually is so each function performs a specific task.
A function declaration tells the compiler about a function's name, return type, and parameters. A function definition provides the actual body of the function.
The C standard library provides numerous built-in functions that your program can call. For example, function strcat() to concatenate two strings, function memcpy() to copy one memory location to another location and many more functions.
A function is known with various names like a method or a sub-routine or a procedure, etc.

Defining a Function:

The general form of a function definition in C programming language is as follows:
return_type function_name( parameter list )
{
   body of the function
}
A function definition in C programming language consists of a function header and afunction body. Here are all the parts of a function:
  • Return Type: A function may return a value. The return_type is the data type of the value the function returns. Some functions perform the desired operations without returning a value. In this case, the return_type is the keyword void.
  • Function Name: This is the actual name of the function. The function name and the parameter list together constitute the function signature.
  • Parameters: A parameter is like a placeholder. When a function is invoked, you pass a value to the parameter. This value is referred to as actual parameter or argument. The parameter list refers to the type, order, and number of the parameters of a function. Parameters are optional; that is, a function may contain no parameters.
  • Function Body: The function body contains a collection of statements that define what the function does.

Example:

Following is the source code for a function called max(). This function takes two parameters num1 and num2 and returns the maximum between the two:
/* function returning the max between two numbers */
int max(int num1, int num2) 
{
   /* local variable declaration */
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

Function Declarations:

A function declaration tells the compiler about a function name and how to call the function. The actual body of the function can be defined separately.
A function declaration has the following parts:
return_type function_name( parameter list );
For the above defined function max(), following is the function declaration:
int max(int num1, int num2);
Parameter names are not important in function declaration only their type is required, so following is also valid declaration:
int max(int, int);
Function declaration is required when you define a function in one source file and you call that function in another file. In such case you should declare the function at the top of the file calling the function.

Calling a Function:

While creating a C function, you give a definition of what the function has to do. To use a function, you will have to call that function to perform the defined task.
When a program calls a function, program control is transferred to the called function. A called function performs defined task and when its return statement is executed or when its function-ending closing brace is reached, it returns program control back to the main program.
To call a function, you simply need to pass the required parameters along with function name, and if function returns a value, then you can store returned value. For example:
#include <stdio.h>
 
/* function declaration */
int max(int num1, int num2);
 
int main ()
{
   /* local variable definition */
   int a = 100;
   int b = 200;
   int ret;
 
   /* calling a function to get max value */
   ret = max(a, b);
 
   printf( "Max value is : %d\n", ret );
 
   return 0;
}
 
/* function returning the max between two numbers */
int max(int num1, int num2) 
{
   /* local variable declaration */
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}
I kept max() function along with main() function and compiled the source code. While running final executable, it would produce the following result:
Max value is : 200

Function Arguments:

If a function is to use arguments, it must declare variables that accept the values of the arguments. These variables are called the formal parameters of the function.
The formal parameters behave like other local variables inside the function and are created upon entry into the function and destroyed upon exit.
While calling a function, there are two ways that arguments can be passed to a function:
Call TypeDescription
This method copies the actual value of an argument into the formal parameter of the function. In this case, changes made to the parameter inside the function have no effect on the argument.
This method copies the address of an argument into the formal parameter. Inside the function, the address is used to access the actual argument used in the call. This means that changes made to the parameter affect the argument.
By default, C uses call by value to pass arguments. In general, this means that code within a function cannot alter the arguments used to call the function and above mentioned example while calling max() function used the same method.