# How to access the command line parameters in C

> Learn how to access command line parameters in C by using the argc count and argv array in main(int argc, char *argv[]) to read the arguments passed in.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2020-02-21 | Topics: [C](https://flaviocopes.com/tags/clang/) | Canonical: https://flaviocopes.com/c-parameters-command-line/

In your [C](https://flaviocopes.com/c-introduction/) programs, you might have the need to accept parameters from the command line when the command launches.

For simple needs, all you need to do so is change the `main()` function signature from

```c
int main(void)
```

to

```c
int main (int argc, char *argv[])
```

`argc` is an integer number that contains the number of parameters that were provided in the command line.

`argv` is an [array](https://flaviocopes.com/c-arrays/) of strings.

When the program starts, we are provided the arguments in those 2 parameters.

> Note that there's always at least one item in the `argv` array: the name of the program

Let's take the example of the C compiler we use to run our programs, like this:

```sh
gcc hello.c -o hello
```

If this was our program, we'd have `argc` being 4 and `argv` being an array containing

- `gcc`
- `hello.c`
- `-o`
- `hello`

Let's write a program that prints the arguments it receives:

```c
#include <stdio.h>

int main (int argc, char *argv[]) {
  for (int i = 0; i < argc; i++) {
    printf("%s\n", argv[i]);
  }
}
```

If the name of our program is `hello` and we run it like this: `./hello`, we'd get this as output:

```
./hello
```

If we pass some random parameters, like this: `./hello a b c` we'd get this output to the terminal:

```
./hello
a
b
c
```

This system works great for simple needs. For more complex needs, there are commonly used packages like **getopt**.
