Probleme mit den Kommandozeilenargumenten



  • Hallo,

    ich schreibe gerade ein tool, welches vor Begin über die Kommandozeile Argumente mitnehmen soll. Normal kein Ding, aber heut klappt es einfach nicht 😕 . Vielleicht könnt ihr mir sagen wo mein Fehler liegt. Ich bekomm immer die Fehlermeldung:
    "assignment to 'short int' from 'char *' lacks a cast
    "assignment to 'int' from 'char *' lacks a cast

    Der Code schaut bisher so aus:

    int main(int argc, char *argv[])
    {
    short id;
    Date datum;
    int nummer;

    if( argc=4 )
    {
    id = argv[1];
    datum = argv[2];
    nummer = argv[3];
    }

    ....

    Thanx im Voraus

    😕
    Heut ist nicht mein Tag, aber er muss weiter gehen...



  • int main(int argc, char *argv[]) 
    { 
    short id; 
    Date datum; 
    int nummer; 
    
    if( argc=4 ) 
    { 
    id = argv[1];    // argv[1] ist ein char* und kein short. Also musst du das Umwandeln
    datum = argv[2];
    nummer = argv[3];   // argv[2] ist ein char* und kein short. Also musst du das Umwandeln
    }
    


  • Hallo,

    if( argc=4 )
    

    Was willst du mit diesem if bezwecken? Ich denke mal du willst prüfen ob argc == 4 ist. Hier weist du argc aber den Wert 4 zu, was dann für die if-Bedingung immer true ist.

    Desweiteren kannst du nicht einfach so einen char* in einen int umwandeln. Auch hier ist es wichtig, was du willst ;). Willst du die Argumente, die als char* vorliegen in Zahlen umwandeln? Dann siehe FAQ (Thread Einmal Zahl nach String und zurück), oder willst du nur das Bitmuster von char* als Int interpretieren? dann verwende einen reinterpret_cast<>() (Ich glaube aber eher, dass du ersteres willst ).

    /edit: Zu spät...

    Gruß Caipi



  • Die Kommandozeilenparameter liegen als C-Strings (char[]) vor - die mußt du selber in numerische Daten umwandeln (z.B. mit atol oder StringStream-Schiebereien).



  • dankeschön, 😮 da habt ihr aber ganz schön viele leichtsinnsfehler gefunden.

    🕶 Lauf ich heut blind durch die Gegend?

    Natürlich will ich mit argc = 4 prüfen ob es 4 Argumente sind, aber so nicht..
    Das man einem int kein char zuweisen kann weiß ich auch, nur heut...

    Ich geh heut früher schlafen, hope it works!

    Nochmal Danke


Anmelden zum Antworten