Speicherzugriffsfehler!
-
Hi ich habe folgenden Quellcode:
void analyse_args(int argc, char* argv[]) { unsigned char arg[10]; unsigned char src[5]; unsigned char dst[5]; unsigned char otp[5]; printf("\tAnalysing arguments...\n"); for(; argc != 1; argc--) { if(argv[argc] == " ") argc--; else strncpy(arg, argv[argc], 10); printf(arg); } }
Wenn ich nun mein programm mit '<programmname> a' aufrufe bekomm ich einen 'Speicherzugriffsfehler'.
Hat evtl. jemand eine ahnung woran das liegen koennte?
Mein Compiler: gcc -v [3.3.5]
ld -v [2.15]
OS: Debian/GNU Linux 3.1 sarge_stable
-
was soll den dieser Vergleich:
if(argv[argc] == " ")
??
-
Der eigentliche Speicherzugriffsfehler ist wohl, dass der Zugriff auf argv[argc] immer falsch ist da das letzte übergebene Argument argv[argc-1] ist.
-
@TactX: Hast natürlich recht, bin sooo blind.
Swordfish schrieb:
was soll den dieser Vergleich:
if(argv[argc] == " ")
??
Trotzdem gibt's da IMHO Verständnisprobleme.
Greetz, Swordfish
-
Mein Beitrag war durchaus ergänzend zu deinem gemeint
Der Vergleich macht Null Sinn, da ein Zeiger in argv[i] sicher nie auf das Stringliteral " " zeigen wird.
-
TactX schrieb:
Der Vergleich macht Null Sinn, da ein Zeiger in argv[i] sicher nie auf das Stringliteral " " zeigen wird.
Tja, das ist so eine typische "ich weiß es, du weißt es, aber ..."-Konstellation
Greetz, Swordfish
-
Ich wollte das dem OP erläutern, nicht dir