student@ubuntu:~$
c 2/5 25 XP

Command-Line Arguments

0%

Quick Reference

argc and argv:

// ./calculator 3 + 4
// argc = 4
// argv[0] = "./calculator"
// argv[1] = "3"
// argv[2] = "+"
// argv[3] = "4"
// argv[4] = NULL

Validation pattern:

int main(int argc, char *argv[])
{
    if (argc != 3)
    {
        fprintf(stderr, "Usage: %s input.txt output.txt\n", argv[0]);
        return 1;
    }
    // argv[1] and argv[2] are safe to access
}

String-to-number conversion:

Function Use Error handling
atoi(s) String → int Returns 0 on failure (silent)
atof(s) String → double Returns 0.0 on failure (silent)
strtol(s, &end, 10) String → long Reports errors properly

Java vs C:

Java C
args[0] = first user arg argv[0] = program name
args.length = user arg count argc = total count (including program name)
Integer.parseInt(args[0]) atoi(argv[1])

Common Pitfalls

  • Off-by-one from Java — Java’s args[0] is the first user arg. C’s argv[0] is the program name. User args start at argv[1].
  • Forgetting argc check — Accessing argv[3] when argc is 2 reads past the array.
  • Arguments are stringsargv[1] is always char *. Use atoi/atof to convert.
  • Shell glob expansion* expands to filenames. Quote or escape special characters.
  • atoi silent failureatoi("hello") returns 0 without error. Validate input if it matters.

Unlocks

Complete this skill to see what it unlocks.