cd cs31/weeklylab pwd mkdir week09 ls cd week09 pwd cp ~newhall/public/cs31/week09/* . ls
vim commandlineargs.cThe first thing to note is the change in main's definition:
int main(int argc, char *argv[]) { ...The first parameter to main, argc, is the number of command line arguments. For example, if the user enters:
./a.out 10 11 200argc will be 4 (a.out counts as one of the command line arguments, and 10, 11, and 200 as three more).
Each command line argument is passed to main in the second parameter, argv, as a string (argv is an array of strings):
----- argv[0]:| *-|-----> "./a.out" ----- argv[1]:| *-|-----> "10" ----- argv[2]:| *-|-----> "11" ----- argv[3]:| *-|-----> "200" ----- argv[4]:| *-|-----| (NULL pointer: no more command line strings) -----C has functions that can convert strings of numeric characters to their int, float, and other basic types, values.
int x = atoi(argv[1]); // x gets the int value 10See the man page for atoi for more information (man atoi).
Let's try compiling and running this program with different command
line arguments and see what happens.
More information about arrays in C, including dynamically allocated 2D arrays:
Arrays in C (we will use Method 1 for dynamically allocated 2D arrays).
Here is some documentation about file I/O in C:
File I/O in C
Here is some documentation about writing makefiles:
Makefiles
I suggest following the simple example here, and/or using a makefile from
a previous lab assignment as a starting point.
In lab on week 5 we looked at some examples of using both gdb and valgrind. Take a look at the the week 5 weekly lab page and the examples we talked about as a reminder of how to use these debugging tools.
Also, here are links to my guides for gdb, ddd, and valgrind: