www.mikrocontroller.net

Forum: PC-Programmierung Problem mit argc


Autor: Sandy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liebe Kollegen!

Ich habe einen Code bekommen den ich durchschauen soll. Leider scheitere 
ich schon bei den ersten Zeilen. Er beendet sich immer selber mit 
exit(1).

Wie kann ich das verhindern??? (einfach auskommentieren geht nicht)
int main(int argc, char *argv[])
{
  long  i,j;
  bit   help;
  //...


  printf("    Simulation \n\n");
  if(argc!=4) 
    {
      printf("###");
      exit(1);
    }
 
  Test2=atoi(argv[1]);

  Test2=atof(argv[2]);

Bussi
Sandy

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du bedenkst aber schon, dass argc mindestens "1" ist (argv[0] ist immer 
der Name der Binary selbst).

Autor: Sandy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Programm ist nicht von mir, ich solls nur verstehen.

soll ich if(argc!=4) auf if(argc!=3) ändern?

Der ders geschrieben hat sagt bei ihm geht es so wie es ist.

Bussi
Sandy

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei if(argc!=4) wird das Programm mit exit(1) verlassen, wenn die anzahl 
der Parameter die zu zusätzlich eingibst ungleich "3" ist.
Wenn das Programm also test.exe heisst, und du es so aufrufst:
test.exe hallo du sau
Dann wird das was innerhalb der if-Abfrage steht nicht ausgeführt
Wenn du das Programm so aufrufst:
test.exe hallo du doofe sau
Dann hingegen schon

Autor: Skua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lass dir vor dem exit den inhalt von argc und argv ausgeben.

Autor: Sandy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar, das heisst ich muss das Programm mit test.exe und dann mit 4 
Parametern aufrufen richtig?

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sandy schrieb:
> Alles klar, das heisst ich muss das Programm mit test.exe und dann mit 4
> Parametern aufrufen richtig?
Oder 1 oder 2 oder 4 oder 5 oder 28452
Alles nur nicht 3
Dass "!=" ungleich bedeutet weißt du aber oder? Und wenn nicht, dann 
weißt du es jetzt.

Autor: Sandy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich springe doch in´s if wenn argc nicht 4 ist. Wiso kann ich dann jede 
anzahl außer 3 eingeben?

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sandy schrieb:
> ich springe doch in´s if wenn argc nicht 4 ist. Wiso kann ich dann jede
> anzahl außer 3 eingeben?
Weil - wie bereits gesagt - argc MINDESTENS "1" ist in argc[0] (also das 
erste Element steht immer der name der binary als parameter.
Wenn du also test.exe ohne Parameter aufruftst ist argc bereits 1 und in 
argv[0] steht test.exe. Also kannst du noch 3 weitere Parameter beim 
Aufruf eingeben bis argc "4" ist

Autor: Sandy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, das verstehe ich jetzt.

Dann müsste ich aber 3 Parameter eingeben. Ich will ja nicht 
reinspringen oder?

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm sorry,
ist natürlich genau umgekehrt. Hatte ich anfangs ja auch so geschrieben. 
Du musst 3 Parameter eingeben wenn er NICHT den Code in der If-Anweisung 
ausführen soll.

Autor: Sandy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihr seid SUPER! Ich kenn mich aus und der Code läuft.
(jetzt muss ich ihn "nur noch" verstehen)

DANKE
Bussi
Sandy

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.