Ansi C: Eingabe Kommandozeile

Gast #3717552
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren