argv +argc

Post Reply
Message
Author
peter+.k

argv +argc

#1 Post by peter+.k »

Ich bin gerade dabei ein kleines Programm zu schreiben bei den ich 2 argumente mit geben will.
Die wären erstens eine Quelldatei und eine Zieldatei.

Nun wenn der Benutzer 2 Argumente eingibt soll es den inhalt der Quelldatei in die Zieldatei schreiben, wenn er aber nur ein Argument eingegeben hat soll es einfach den Inhalt der Quell datei auf dem Bildschirm ausgeben.

Bitte helft mit. Bin schon mehrere Tage dran.

Das hab ich bis jetzt:
#include <stdio.h>

int main(int argc, char* argv[]) {

FILE* quelldatei=NULL;
FILE* zieldatei=NULL;

int c;
if(argc>0) {
zieldatei=fopen(argv<font size="1">,"w"); //zweiter param
printf("Quelldatei: %s wurde geöffnet
",argv<font size="1">);


if((quelldatei=fopen(argv<font size="1">,"r")) == NULL){
printf("Konnte %s nicht oeffnen
",argv<font size="1">);
getchar();
exit(-1);
} // if

if(argc>1) {
//wenn mindestens 2 Argumente angegeben wurden
zieldatei=fopen(argv<font size="2">,"w"); //zweiter param
printf("Zieldatei: %s wurde geöffnet
",argv<font size="2">);
}
printf ("%s",argv<font size="1">);
fseek(quelldatei, 0L, SEEK_END);
long filepos = ftell(quelldatei);
while (filepos >= 0) {
fseek(quelldatei, filepos, SEEK_SET);
putc(getc(quelldatei), zieldatei);
filepos--;
} // while

// } // if(argc > 1)

} // if (argc > 1)

else { // if argc <= 0, keine argumente angegeben
printf("Keine Argumente angegeben

");
printf ("%s",argv<font size="1">);
getchar();
} // else

} // main

Jochen

Re: argv +argc

#2 Post by Jochen »

Dein erstes Problem ist, dass "argc" immer grösser 0 sein muss, da in der Parameterliste auch der Name des Programms (auf Index 0 im Array) steht.

Probier mal folgendes Programm aus, da siehst Du es: <blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
/* Programm: arg */
#include <stdio.h>

int main (int argc, char *argv[]) {

int i;

printf "Anzahl Argumente: %d\<!--no-->n",argc) ;

for (i=0; i < argc ; i++ ) {
printf ("Argument %d: %s\<!--no-->n", i, argv[<!--no-->i<!--no-->]);
}
exit (0);
}
</font><hr></pre></blockquote>

Als arg.c abgespeichert und mittels "make arg" übersetzt, kannst Du es beispielsweise mit "arg hallo du da" aufrufen. Ergebnis ist dann

Anzahl Argumente: 4
Argument 0: arg
Argument 1: hallo
Argument 2: du
Argument 3: da

OK soweit? Schau Dir auch mal an, wie auf die Argumente zugegriffen wird, und überarbeite Dein Programm dann noch einmal.

Jochen

Post Reply