تابع ()getopt - تفسیر پارامترهای خط فرمان

از این تابع برای تشخیص سوئیچ هایی که در خط فرمان نوشته شده اند استفاده میشود.

#include <unistd.h>
 
int getopt(int argc, char * const argv[], const char *optstring);
man 3 getopt

# _XOPEN_SOURCE
man 7 feature_test_macros
/* new-sum.c */
#define _XOPEN_SOURCE 500
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void printhelp(char progname[]);
 
int main(int argc, char *argv[])
{
    int i, opt, sum;
 
    /* Simple sanity check */
    if (argc == 1)
    {
        printhelp(argv[0]);
        return 1;
    }
 
    /* Parse command-line options */
    while ((opt = getopt(argc, argv, "smh")) != -1)
    {
        switch (opt)
        {
            case 's': /* sum the integers */
                sum = 0;
                for (i=2; i<argc; i++)
                    sum = sum + atoi(argv[i]);
                break;
            case 'm': /* multiply the integers */
                sum = 1;
                for (i=2; i<argc; i++)
                    sum = sum * atoi(argv[i]);
                break;
            case 'h': /* -h for help */
                printhelp(argv[0]);
                return 0;
            default: /* in case of invalid options*/
                printhelp(argv[0]);
                return 1;
        }
    }
    printf("Total: %i\n", sum);
    return 0;
}
 
void printhelp(char progname[])
{
    printf("%s [-s] [-m] integer ...\n", progname);
    printf("-s sums all the integers\n"
        "-m multiplies all the integers\n"
        "This program takes any number of integer "
        "values and either add or multiply them.\n"
        "For example: %s -m 5 5 5\n", progname);
}
$ make new-sum
cc     new-sum.c   -o new-sum
$ ./new-sum
./new-sum [-s] [-m] integer ...
-s sums all the integers
-m multiplies all the integers
This program takes any number of integer values and either add or multiply them.
For example: ./new-sum -m 5 5 5
$ ./new-sum -s 5 5 5
Total: 15
$ ./new-sum -m 5 5 5
Total: 125