Reputation: 805
So, this is a really basic question. For an assignment we had to write a c program that would calculate the page and offset number of a virtual address. My program seems to work fine when I make a vocal variable of the virtual address that we are supposed to do calculations on, but I can't figure out how to pass it.
The assignment says that we should run our program like this
./program_name 19982
I just can't figure out how to pass that 19982 in terminal on my mac. Any help is appreciated. (And in before someone makes a mac joke.)
Upvotes: 3
Views: 14686
Reputation: 141868
It sounds like you are looking for argv
, which I suppose is difficult to search for if you don't know what it is called! This isn't specific to Mac OS X's Terminal.
The argv
argument of a main()
function is an array of strings; its elements are the individual command line argument strings.
The path to the program being run is the first element of argv
, that is argv[0]
.
The number of elements in argv
is stored in argc
:
#include <stdio.h>
int main(int argc, char* argv[])
{
int arg;
for (arg = 0; arg < argc; ++arg)
{
printf("Arg %d is %s\n", arg, argv[arg]);
}
return 0;
}
Compile:
% gcc program_name.c -o program_name
Run:
% ./program_name 19982
Arg 0 is ./program_name
Arg 1 is 19982
Converting argv[1]
to an int
is left as an exercise.
Upvotes: 8
Reputation: 27258
You can use argc
and argv
to access program's arguments. argc
is the "arguments count" - the number of arguments passed. argv
is the "arguments vector", where the first member is the name of the program.
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char* argv[] )
{
int Address;
if (argc > 1)
{
Address = atoi(argv[1]);
}
else
{
printf("No arguments passed\n");
return 1;
}
return 0;
}
Upvotes: 4
Reputation: 409364
All C (and C++, don't know about objective-c) programs start their execution in the function main
. This function takes two arguments: An integer, usually named argc
which is a counter of the number of arguments given to the program; The second function argument is an array of char
pointers, usually called argv
and is the actual command line arguments.
The first entry in argv
is always the name of the command itself, which means that argc
will always be at least 1.
The following program prints all arguments given on the command line:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Total number of values in argv: %d\n", argc);
for (int a = 0; a < argc; a++)
printf("argv[%02d]: %s\n", a, argv[a]);
}
Upvotes: 1
Reputation: 121799
Typically, you'd use "argv/argc" in main. For example:
#include<stdio.h>
int
main (int argc, char *argv[])
{
if (argc < 2)
printf ("You didn't enter any arguments\n");
else
printf ("Your first argument is %s\n", argv[1]);
return 0;
}
Under Linux, you'd compile and run like this:
gcc -o hello hello.c
./hello howdy!
Again under Linux, it would output something like this:
Your first argument is howdy!
Upvotes: 1