The argument count (argc) includes the program name as argv[0], so it's always one more than the number of command-line arguments passed. If you run ./prog arg1 arg2, argc is 3 (program name + 2 arguments). This is why argc equals number of arguments plus one, not just the argument count.