B
Bob
I was playing with args from command line, trying to understand how
they work. But my little program shows up a strange behaviour that I
don't understand. An extra beginning char appears. For instance where I
expected "abba" I get "aabba" and instead of "tony I get "ttony". Can
someone explain why this is so.
Thanks
Bob
THE PROGRAM
// argtest.c
#include <stdio.h>
main(int argc, char *argv[])
{
int i;
for (i=0; i<argc; i++) {
printf("argv= %d\n", argv);
printf("argv[0]= %d\n", argv[0]);
printf("*argv= %s\n", *argv);
argv++;
}
char *g;
for(i=0; i<20; i++) {
g = (char*)(4006977+i);
printf(" %c\n", *g);
}
}
THE OUTPUT
C:\kern\find>gcc argtest.c -o argtest
C:\kern\find>argtest abba tony
argv= 4007056
argv[0]= 4006977
*argv= argtest
argv= 4007060
argv[0]= 4006986
*argv= abba
argv= 4007064
argv[0]= 4006992
*argv= tony
a
r
g
t
e
s
t
a
a
b
b
a
t
t
o
n
y
they work. But my little program shows up a strange behaviour that I
don't understand. An extra beginning char appears. For instance where I
expected "abba" I get "aabba" and instead of "tony I get "ttony". Can
someone explain why this is so.
Thanks
Bob
THE PROGRAM
// argtest.c
#include <stdio.h>
main(int argc, char *argv[])
{
int i;
for (i=0; i<argc; i++) {
printf("argv= %d\n", argv);
printf("argv[0]= %d\n", argv[0]);
printf("*argv= %s\n", *argv);
argv++;
}
char *g;
for(i=0; i<20; i++) {
g = (char*)(4006977+i);
printf(" %c\n", *g);
}
}
THE OUTPUT
C:\kern\find>gcc argtest.c -o argtest
C:\kern\find>argtest abba tony
argv= 4007056
argv[0]= 4006977
*argv= argtest
argv= 4007060
argv[0]= 4006986
*argv= abba
argv= 4007064
argv[0]= 4006992
*argv= tony
a
r
g
t
e
s
t
a
a
b
b
a
t
t
o
n
y