Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » 2 kleine dinge, die hilfe benötigen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.09.2003, 01:12 Uhr
~Blackhornet
Gast


Ich bräuchte etwas Hilfe bei zwei sachen:

1. ich hab ne
int main(int argc, char *argv[])

wie kann ich im programm abfragen, ob überhaupt ein parameter mit angegeben wurde. Ist dies nicht der fall, so möchte ich nämlich ne printf serie ausgeben, welche parameter zur verfügung stehen.

Hab schon annähernd alles probiert.... argv auf NULL abfragen, argc auf 0 und NULL abfragen...nix klappt.

2. hat werd nen guten chiffrierungs algorithmus um ein textfile zu chiffrieren...im moment benutze ich Vinerge. Wäre schön, wenn jemand nen besseren zur Hand hätte oder nen besseren kennt.

mfg
BlackHornet
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.09.2003, 01:13 Uhr
~BlackHornet
Gast


PS: der code sollte wenns geht auch dechiffrieren können ....also bitte in beide richtungen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.09.2003, 01:39 Uhr
Pablo
Supertux
(Operator)


Zu 1:
Die Variable argc sagt, wie viele Argumente vorhanden sind. Es gibt immer mindestens ein Argument, d.h argc ist immer mindestens 1.

Der Bereich von argv**, der die Argumente enthält ist [0, n-1], d.h. wenn n = 1 ==> keine Argumente. Das erste Argument (argv[0]) ist immer der Nam des Programmes, d.h. wie du das Programm ausgeführt hast.

Welche Argumente und in welchen Format liegt nur an dir selbst, denn nur du (als Programmier) weißt, welche Argumente zu erlaubt sind, und die Reihenfolge, usw. afür musst du eine eigene Parse-Funktion machen.

Beispiel: (in C)
das Programm "myargs"
Es wird wie folgt ausgeführt. (Und nur diese Argumente sind gültig)

Code:
$ ./myargs arg1 arg2 arg3 -x -y -q -z


Wenn du argc abfragst, dann kriegst du 8 und das ist der Inhalt der 8 Strings
argv[0]="./myargs" -- argv[1]="arg1"
argv[2] = "arg2" -- argv[3] = "arg3"
argv[4] = "-x" -- argv[5] = "-y"
argv[6] = "-q" -- argv[7] = "-z"

Wie kannst du eine Funktion, die diese Parameter findet? Ich stelle dir eine sehr einfache Funktion vor:


C++:
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv)
{
    int i,j=0;
    char str[255];
    printf("Du hast das Programm so ausgeführt: %s\n", argv[0]);
    for(i=1; i<argc; ++i) {
        if (!strcmp(argv[i], "arg1")) // strcmp liefert 0 wenn beide strings gleich sind
            j = 1;
        if (!strcmp(argv[i], "arg2"))
            j = 1;
        if (!strcmp(argv[i], "arg3"))
            j = 1;
        if (!strcmp(argv[i], "-x"))
            j = 1;
        if (!strcmp(argv[i], "-y"))
            j = 1;
        if (!strcmp(argv[i], "-q"))
            j = 1;
        if (!strcmp(argv[i], "-z"))
            j = 1;
       if(j) sprintf(str, "bekanntes Argument: %s", argv[i]);
       else sprintf(str, "unbekannes Argument: %s", argv[i]);
       printf("Das %d. Argument ist ein %s\n", i, str);
       j=0;
    }
}


Das ist eine naive Variante, man kann bessere machen, aber das geht davon ab, wie die Argumente aussehen. Es gibt Programme, die -xyz als ein Argument xyz betrachten. Programme wie tar betrachten das als -x -y -z. Das ist natürlich komplizierter. Es wird auch schiewrig, wenn deine Argumente eine Reihenfolge haben müssen. In diesem Beispiel spielt die Reihenfolge keine wichtige Rolle. Probier dieses Programm und führe es mit verschiedenen Argumenten (gültige und ungültige) und sieh mal, was du kriegst.

Zu 2: Guck mal hier weiter nach. In der Woche haben wie das Thema "wie kann ich von einer txt Datei lesen" mindestens 2 oder 3 Mal besprochen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 09.09.2003 um 01:43 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.09.2003, 08:01 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
Pablo Yanez Trujillo postete

...
Beispiel: (in C)
das Programm "myargs"
Es wird wie folgt ausgeführt. (Und nur diese Argumente sind gültig)

Code:
$ ./myargs arg1 arg2 arg3 -x -y -q -z


Wenn du argc abfragst, dann kriegst du 8 und das ist der Inhalt der 8 Strings
argv[0]="./myargs" -- argv[1]="arg1"
argv[2] = "arg2" -- argv[3] = "arg3"
argv[4] = "-x" -- argv[5] = "-y"
argv[6] = "-q" -- argv[7] = "-z"
...


Es ist übrigends garantiert, daß argv[argc] == NULL.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.09.2003, 08:24 Uhr
0xdeadbeef
Gott
(Operator)


Probieren geht über Studieren. Mach mal:

C++:
int main(int argc, char *argv[]) {
  int i;
  for(i = 0; i < argc; ++i)
    printf("argv[%d] == %s\n", i, argv[i]);
}


Und dann ruf es mit ein paar parametern auf.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.09.2003, 13:04 Uhr
~BlackHornet
Gast


ok danke schonmal
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.09.2003, 20:22 Uhr
~TheGamer
Gast


hat wer nen guten chiffrierungs algorithmus um ein textfile zu chiffrieren...im moment benutze ich Vinerge. Wäre schön, wenn jemand nen besseren zur Hand hätte oder nen besseren kennt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: