This blog is under construction

Tuesday, 31 December 2013

main function in C

main() function is mandatory for any C program.  Because, the program execution starts from main().  Default return type for main function is an integer.  Return value from main function could help us to find the exit status of a C program.

Consider the following example,
  #include <stdio.h>
  int main() {
        int val;
        printf("Enter an integer: ");
        scanf("%d", &val);

        if (val < 0) {
                printf("%d is negative\n", val);
                return (-1);
        } else {
                printf("%d is positive\n", val);
                return (val);

  jp@jp-VirtualBox:~/$ ./a.out
  Enter an integer: -1
  -1 is negative
  jp@jp-VirtualBox:~/$ echo $?
  255  // exit status of the program
  jp@jp-VirtualBox:~/$ ./a.out
  Enter an integer: 50
  50 is positive
  jp@jp-VirtualBox:~/$ echo $?
  50  // exit status of the program

How to get exit status of a command?
"echo $?" provides exit status of any program.  Here, the exit codes of our program are the return values from main function.  Exit codes are from 0 to 255(unsigned char).  So, shell would return 255 for the exit code -1(wraparound occurs).

What is command line argument?
Basically, command is an executable used to perform a specific task(eg. ls command). Any arguments supplied to an executable(command) are called command line arguments.

ls -a  => lists all files in a directory(including hidden files)

ls  - command
-a - command line argument

main function with command line arguments:
main function can be written with no arguments or with command line arguments.

Consider the following example,
int main(int argc, char *argv[]) {
       return 0;

Here, we have written main function with command line arguments.
argc and argv are command line arguments.
argc    - number of command line arguments
*argv[] - array of character pointers

How to pass command line arguments in C?
While executing program in the shell, we can supply arguments along with executable name.

Example: ./a.out   arg1  arg2  arg3
./a.out  - Executable
arg1, arg2, arg3 - command line arguments

Example C program to illustrate command line arguments:
  #include <stdio.h>
  int main(int argc, char *argv[]) {
        int i;
        for (i = 0; i < argc; i++) {
                printf("argv[%d]: %s\n", i, argv[i]);  // prints command line arguments
        return 0;

  jp@jp-VirtualBox:~/$ ./a.out india is my country
  argv[0]: ./a.out
  argv[1]: india
  argv[2]: is
  argv[3]: my
  argv[4]: country

No comments:

Post a Comment