Ansi C: Eingabe Kommandozeile

Gast #3717552
Hallo, folgendes möchte ich gerne für meine Applikation umsetzen.

>Kommandozeile Eingabe 1: test.exe -p 64
>Kommandozeile Eingabe 2: test.exe -p 128


Die Eingabe 64 möchte ich gerne in eine Variable speichern. Wie könnte 
ich dies realisieren?
1
int _tmain(int argc, _TCHAR* argv[])
2
{
3
  if(argc < 2)
4
  {
5
    printf ("\nSyntax: Test [-p Puffergröße]\n");
6
  }
7
  if(argc == 3)
8
  {
9
    if((argv[1][0] == '-') && (argv[1][1] == 'p'))
10
    {
11
                      // ????
12
                  }
13
          }
Gast #3717579
Wenn ich die Funktion atoi benutze, dann gibt Visual Studio 2010 
folgende Meldung aus: Test.exe funktioniert nicht mehr...

1
if((argv[1][0] == '-') && (argv[1][1] == 'p'))
2
{
3
    printf("\nv1 = %d\n", atoi((const char*)argv[2][0]));
4
}
#3717597
atoi erwartet einen Zeiger auf einen Nullterminiertes char-Array 
(C-String): ein char*
argv[2][0] ist aber ein char (ein Zeichen, bei dir die '6' von der "64")

Lass den zweiten Index weg. Dann brauchst du auch den cast nicht mehr. 
Damit hast du nur Fehlermeldung vom Compiler unterdrückt und nicht dein 
Problem behoben.

caste nur, wenn du weisst was du tust.
1
printf("\nv1 = %d (%s)\n", atoi(argv[2]), argv[2]);
Gast #3717607
Leon schrieb:
> Ok vielen Dank. Mit einer Zahl funktionert es. Was müsste ich tun, damit
> ich den Eingabewert 64 in einen Integer ablegen kann?
1
 printf("\nv1 = %d\n", atoi(argv[2]);

Das sollte ohne Änderung auch mit Zahlen aus mehreren Ziffern 
funktionieren.

P.S. Es wird gut sein, wenn Du in Zukunft strikt zwischen "Zahl" und 
"Ziffer" unterscheidest.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.