Forum
Tipps
News
Menu-Icon

Aufrufparameter überprüfen in C

N´Abend Leute...

Habe ein kleines Problem mit C und Konsolenparametern eines selbst geschriebenen Programmes.

Ich schreibe ein kleines Programm, was eigentlich nur die Adresse eines  Moduls ändern soll.

Der 1. Parameter ist die ID des Moduls, diese muss eine Zahl sein und darf nur aus 5 stellen bestehen.

Der 2. Parameter muss ein Wert zwischen -1 und 15 sein.

Mein Problem ist nun, das ich schon ewig (bestimmt schon 1,5 Jahre) nichts mehr mit C gemacht habe und da "etwas" eingerostet bin.

Ich möchte nun gerne den ersten Parameter prüfen auf:

Ist er Zahl?
Ist er 5 Stellen groß?

So sieht mein Programm bisher aus...

int main(int argc, char* argv[])
{
   
int i,para1,para2;

    if (argc<=2)
    {
        open_help();
        return 0;
    }
   
    else
    {
       printf(argv[1]);
       printf(argv[2]);

           para1 = atoi(argv[1]);
       para2 = atoi(argv[2]);
       
       printf("Para 1: %i\n",para1);
           printf("Para 2: %i\n",para2);
               
       if (para2<=-2||para2>=16)
       {
            open_help();
            usb_card_info();
           }
           
           else if(para2>-2&&para2<=15)
           {
            usb_adr_set(para2);
           }
           
           else
           {
            open_help();
            usb_card_info();
           }
    }

return 0;
}

Antworten zu Aufrufparameter überprüfen in C:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Möchtest du den Wert vor oder nach der Konvertierung mit atoi prüfen?
Hinterher isses sowieso ne Zahl (wenn der String keine war, dann 0), da kannst du auf >9999 und <100000 prüfen.
Vorher eine Schleife über die Character und jeden mit isdigit checken. Und natürlich mitzählen, obs auch 5 sind.

Hi Lisa!

Para 2 muss ich eigentlich vorher prüfen, da die Moduladresse auch 0 sein kann.

Da kann ich 0 nicht kategorisch ausschließen...

Gruß

Daddy

THX

P.S.:

if (para1)
           {
            for(i=0;i<=sizeof(argv[1]);i++)
            {
             printf("\nGroesse: %i",i);                         
            }         
           }

Liefert immer 4....?!?!?

Egal ob ich para1, oder argv[1] abfrage

Hab ich zu viel Weiswein?! :-)
« Letzte Änderung: 29.03.08, 22:31:33 von Big-Daddy »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Dann irgendwie so:

char c;
int i = 0;
while( (c=argv[1][i]) != 0 ) {
    if( i == 5 ) ... // zu groß
    if( !isdigit( c ) ) ... // keine Zahl
    i++;
}
atoi...
Müssen es genau 5 Stellen sein? Dann nach der Schleife nochmal i prüfen.

EDIT: Da kommt immer 4 raus, weil es ein Pointer ist. 

« Java - GUI ProgrammierungProg nicht in der Taskleiste »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Internet-Zugriffsprogramm
Ein Internet-Zugriffsprogramm, auch Browser genannt, stellt Internetseiten für den Benutzer dar. Am bekanntesten ist der Microsoft Internet Explorer, gefolgt vom kos...

Programm
Siehe Software...

IP-Adresse
Die IP-Adresse ist eine Adresse in einem Computernetzwerk, das auf dem Internet-Protokoll (IP) basiert. Sie besteht aus vier Zahlenblöcken mit Zahlen von 0 bis 255, ...