Command line arguments let you give information to a program when you start it. This helps the program do different things without changing its code.
Syntax of command line arguments
int main(int argc, char *argv[]) { // Your code here }
argc counts how many arguments are passed, including the program name.
argv is an array of strings holding each argument. argv[0] is the program name.
int main(int argc, char *argv[]) { printf("Program name: %s\n", argv[0]); if (argc > 1) { printf("First argument: %s\n", argv[1]); } return 0; }
int main(int argc, char *argv[]) { for (int i = 0; i < argc; i++) { printf("Argument %d: %s\n", i, argv[i]); } return 0; }
This program shows how many arguments were passed and lists each one. The first argument is always the program's name.
#include <stdio.h> int main(int argc, char *argv[]) { printf("Total arguments: %d\n", argc); for (int i = 0; i < argc; i++) { printf("Argument %d: %s\n", i, argv[i]); } return 0; }
Arguments are always strings. You may need to convert them to numbers if needed.
If no extra arguments are given, argc will be 1, and only argv[0] exists.
Command line arguments let you pass information to your program when it starts.
argc tells how many arguments there are, including the program name.
argv holds the actual arguments as strings in an array.
Practice
What does the argc parameter represent in a C program's main function?
Solution
Step 1: Understand the role of
argcargcstands for 'argument count' and tells how many arguments are passed to the program including the program name itself.Step 2: Differentiate
argcfromargvargvis the array holding the actual argument strings, not the count.Final Answer:
The number of command line arguments including the program name -> Option AQuick Check:
argc= argument count [OK]
- Confusing argc with argv
- Thinking argc excludes the program name
- Assuming argc is the argument array
Which of the following is the correct syntax for the main function to accept command line arguments in C?
Solution
Step 1: Recall the standard signature for main with arguments
The correct signature usesint argcandchar *argv[]to receive argument count and argument strings.Step 2: Identify incorrect options
void main() lacks parameters, C uses wrong type for argc, D swaps argc and argv incorrectly.Final Answer:
int main(int argc, char *argv[]) -> Option CQuick Check:
Main signature with argc and argv = int main(int argc, char *argv[]) [OK]
- Using void main instead of int main
- Swapping argc and argv types
- Using char type for argc
What will be the output of the following C program if run as ./program hello world?
int main(int argc, char *argv[]) {
printf("%d %s %s", argc, argv[1], argv[2]);
return 0;
}Solution
Step 1: Count the arguments passed
Running./program hello worldpasses three arguments: program name, "hello", and "world". So, argc = 3.Step 2: Identify argv values
argv[0]= "./program",argv[1]= "hello",argv[2]= "world".Final Answer:
3 hello world -> Option AQuick Check:
argc=3, argv[1]=hello, argv[2]=world [OK]
- Assuming argc excludes program name
- Confusing argv indexes
- Thinking argv[2] is out of range
Identify the error in this C program snippet that uses command line arguments:
int main(int argc, char *argv[]) {
printf("%s", argv[argc]);
return 0;
}Solution
Step 1: Understand argv indexing
argv indexes go from 0 to argc-1. Accessing argv[argc] is out of bounds and unsafe.Step 2: Check other options
argc must be int, argv is array of char pointers, and return statement is present.Final Answer:
Accessing argv[argc] causes out-of-bounds error -> Option BQuick Check:
argv valid indexes: 0 to argc-1 [OK]
- Using argv[argc] instead of argv[argc-1]
- Changing argc type incorrectly
- Ignoring array bounds
How would you write a C program that prints all command line arguments except the program name, each on a new line?
Solution
Step 1: Understand argument indexing
argv[0] is the program name, so to print only arguments, start from index 1.Step 2: Loop through arguments
Loop from i=1 to i<argc to print each argument on a new line.Final Answer:
Use a loop from 1 to argc-1 and print argv[i] -> Option DQuick Check:
Skip argv[0], loop i=1 to argc-1 [OK]
- Starting loop at 0 printing program name
- Looping beyond argc-1 causing errors
- Not using a loop to print all arguments
Ready to prove it?
Pass the test and this pattern moves unknown
