ARGC/ARGV strangeness
Marcus Brubaker
marcus.brubaker-H217xnMUJC0sA/PxXw9srA at public.gmane.org
Tue Sep 20 01:37:16 UTC 2005
A few things:
First, count should be initialized to argc-1 as argv is 0 indexed like
all other C arrays.
Also, I suspect that strtol is running into a space somewhere and
getting confused. To confirm this, print out the arguments as you parse
them (i.e., do a printf("%s-\n",argv[count])) The dash at the end of
the line is to see if there are trailing whitespaces. It also seems
like there may be some oddness in whatever you're using to call the
program as most shells will eliminate those extra spaces.
Regards,
Paul King wrote:
>Hi
>
>I have a little problem with a small program I have written.
>
>I thought I had understood argc/argv under GNU C, but I guess this
>problem has me stumped.
>
>I am writing a tiny program which takes an integer as argument,
>and outputs its ASCII equivalent. Quite simple. Not more than 20 lines
>of code. Here is the code:
>
>---8<---snip----8<----------------
>
>#include <stdio.h>
>#include <strings.h>
>
>int main (int argc, char *argv[]) {
> /* this only takes a number as an argument */
> int num = 0;
> int count = argc;
> for (; (count > 0); count--) {
> num = strtol(argv[count]);
> printf ("%d\t", count);
> printf ("%d\t'%c'\n", num, num);
> }
> return 0;
>}
>
>---8<---snip----8<----------------
>
>The command line is this:
>
>ascii 97 98 99 100 101
>
>And the output is this:
>
>6 0 ''
>5 101 'e'
>4 0 ''
>3 99 'c'
>2 0 ''
>1 97 'a'
>
>So you see my problem. 98 and 100 were apparently ignored, and then
>to top it off, there is this "mystery parameter" #6 which shouldn't
>be there at all. Why is every second parameter ignored, and why is the
>6th parameter there at all (I understand parameter 1 to be the
>program name)?
>
>Paul King
>
>
>--
>The Toronto Linux Users Group. Meetings: http://tlug.ss.org
>TLUG requests: Linux topics, No HTML, wrap text below 80 columns
>How to UNSUBSCRIBE: http://tlug.ss.org/subscribe.shtml
>
>
--
The Toronto Linux Users Group. Meetings: http://tlug.ss.org
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://tlug.ss.org/subscribe.shtml
More information about the Legacy
mailing list