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
}
switch und schleifen
Re: switch und schleifen
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
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
Re: switch und schleifen
>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.
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)