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 😉


Anmelden zum Antworten