Arrays & Strings · beginner · ~8 min

Command-line arguments

Parse arguments from argc/argv robustly.

Lesson

int main(int argc, char **argv)argv is an array of C strings with argv[0] being the program name. argv[argc] is NULL by convention. Iterate from i = 1 to skip the program name.

For options like -v or --help, write your own loop or use a library like getopt (POSIX).

Code examples

int main(int argc, char **argv) {
    for (int i = 1; i < argc; i++) {
        if (strcmp(argv[i], "--help") == 0) { /* ... */ }
    }
}

Common mistakes

  • Forgetting that argv[0] is the program path, not a user-supplied argument.
  • Not bounds-checking before reading argv[i+1] for an option value.