switch und schleifen

Post Reply
Message
Author
bap

switch und schleifen

#1 Post by bap »

kann das jemand mit schleifen machen und nicht mit switch??

#include <stdio.h>

int main(int argc, char *argv[]) {
FILE* quelldatei;
FILE* zieldatei;
int c;

switch(argc) {
long filepos;
case 2:
printf("1 Argument angegeben
");

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

else {
printf("Datei %s wurde geoeffnet
",quelldatei);

} // else

fseek(quelldatei, 0L, SEEK_END);
filepos = ftell(quelldatei);
while (filepos >= 0) {
fseek(quelldatei, filepos, SEEK_SET);
putc(getc(quelldatei), stdout);
filepos -= 1;
} // while

break;

case 3:
printf("2 Argumente angegeben
");

quelldatei=fopen(argv<font size="1">,"r");
if(quelldatei==NULL) {
printf("Konnte Quelldatei %s nicht öffnen!
",argv<font size="1">);
} // if

if(quelldatei!=NULL) {
printf("Quelldatei: %s wurde geoeffnet
",argv<font size="1">);
} // if

zieldatei=fopen(argv<font size="2">,"w");
if(zieldatei==NULL) {
printf("Konnte Zieldatei %s nicht öffnen!
",argv<font size="2">);
} // if

if(zieldatei!=NULL) {
printf("Zieldatei: %s wurde geoeffnet
",argv<font size="2">);
} // if

fseek(quelldatei, 0L, SEEK_END);
filepos = ftell(quelldatei);
while (filepos >= 0) {
fseek(quelldatei, filepos, SEEK_SET);
putc(getc(quelldatei), zieldatei);
filepos -= 1;
} // while


printf("
Inhalt der Quelldatei wurde in die Zieldatei geschrieben
");
break;

default:
printf("Fehler!!! Kein Argument angegeben
");
printf("Weiter mit Enter-Taste
");

fclose(quelldatei);
fclose(zieldatei);
getchar();
break;
} // switch

}

sulu
Posts: 64
Joined: 29. Oct 2001 10:13
Location: Dornbirn

Re: switch und schleifen

#2 Post by sulu »

HI BAP !

Der Switch ist so verwendet sogar grundfalsch !

Vergleich mal mit folgendem Programm-Code
Das Programm sollte funktionieren sofern auch deine Logik mit fseek, putc,... passt.


#include <stdio.h>
#include <stdlib.h>




int main(int argc, char *argv[<!--no--><!--no-->]) {


FILE* quelldatei;
FILE* zieldatei;
char quellfn[<!--no-->256<!--no-->];
char zielfn[<!--no-->256<!--no-->];
int c;
int i;
long filepos;

/* wir lassen genau ein Kommandozeilenargument zu */
switch (argc) {
case 1: {
printf("Nur programmname angegeben\<!--no-->n");
printf("usage: programm quelldatei zieldatei\<!--no-->n");
exit(1);
}
case 2: {
printf("Nur quelldatei = %s angegeben
",argv[<!--no-->1<!--no-->]);
printf("usage: programm quelldatei zieldatei\<!--no-->n");
exit(1);
}
case 3: {
/* Hier wird Filename der Quelldatei abgefuellt */
printf("argument 1 (filename-quelle) = %s
",argv[<!--no-->1<!--no-->]);
sprintf(quellfn,"%s",argv[<!--no-->1<!--no-->]);
/* Hier wird Filename der Zieldatei abgefuellt */
printf("argument 2 (filename-ziel ) = %s
",argv[<!--no-->2<!--no-->]);
sprintf(zielfn,"%s",argv[<!--no-->2<!--no-->]);
break;
}
default: {
if(argc > 4) {
printf("Zu viele argumente eigegeben (zulaessig : 2)\<!--no-->n");
exit(1);
}
}

}

/* Quelldatei oeffnen */
quelldatei=fopen(quellfn,"r");
if(quelldatei==NULL) {
printf("Konnte Quelldatei %s nicht oeffnen!\<!--no-->n",quellfn);
exit(1);
}


/* Zieldatei oeffnen */
zieldatei=fopen(zielfn,"w");
if(zieldatei==NULL) {
printf("Konnte Zieldatei %s nicht oeffnen!\<!--no-->n",zielfn);
exit(1);
}

/* Deine Kopierlogik (hab ich nicht getestet) */
fseek(quelldatei, 0L, SEEK_END);
filepos = ftell(quelldatei);
while (filepos >= 0) {
fseek(quelldatei, filepos, SEEK_SET);
putc(getc(quelldatei), zieldatei);
filepos -= 1;
}

printf(" Inhalt der Quelldatei wurde in die Zieldatei geschrieben\<!--no-->n");

printf("Weiter mit Enter-Taste ");

fclose(quelldatei);
fclose(zieldatei);
getchar();

}


..................

Viel Spass.

Gruss
Sulu

trinity
Posts: 821
Joined: 12. Oct 2001 10:04

Re: switch und schleifen

#3 Post by trinity »

>kann das jemand mit schleifen machen und nicht mit switch??

ja das würde schon gehen. Macht allerdings keinen Sinn.

- man muss nicht hundert mal die gleiche Routine schreiben.

PS: lies mal Jochens Posting bezüglich speziellen Zeichen innerhalb des Boards. Deine Programm-Postings sind schier nicht zu lesen.
"Korrekt, Freundlich, Kostenfrei", wähle genau zwei. (Lutz Donnerhacke in dcsf)

Post Reply