S
Der zweite Parameter ist ein Pointer, der dürfte nicht negativ werden können. Falls du den Zugriff auf das argv meinst, der kann nicht negativ sein, da im buffer-Feld ja ein char >=97 steht.
Das ist meine Vergleichsfunktion:
short _string_compare (char * shortString1 , char * String2)
{ unsigned int i = 0;
while(shortString1[i] != '\0')
{ if(shortString1[i] != String2[i])
return(0);
i++;
}
return(1);
}
EDIT:Wie kann ich denn aus dem x im ersten Argument einen char* machen? Der &-Operator funktioniert hier nicht.
char x = 'e';
_string_compare( x , argv[x - 97] )
Wenn das irgendwie ginge, könnte ich nämlich auf dei callocs verzichten und meine Funktion um einiges verkürzen.
EDIT2: Ich hab's mir jetzt einfach gemacht und die Vergleichsfunktion geändert. Damit betrachte ich dieses Problem mal als gelöst, Verbesserungsvorschläge wären mir aber trotzdem lieb :).
#define _CMD_PTEST(x) (_cmd_ptest_call( (x) , argc , argv , _cmd_line_switch))
short _char_compare (char c1 , char * c2)
{ if(c1 != c2[0])
return(0);
return(1);
}
short _cmd_ptest_call(char x , int argc , char ** argv , short _cmd_line_switch)
{ if(_cmd_line_switch && (_char_compare( x , argv[x - 97] ) || _char_compare( x - 32 , argv[x - 97] )) && _string_length(argv[x - 97]) > 1)
return(1);
else
return(0);
}
int main(int argc , char * argv[])
{ ...
if(_CMD_PTEST('e'))
Zahl = _str_to_double(argv['e' - 97]);
...
}
Das ist zwar alles etwas umständlich, aber von jetzt an kann ich bequem auf meine Parameter zugreifen :).