cp
-
einfaches cp schreiben in C, doch wie? Kann mir da jemand Tipps geben?
-
Kühlschrank auf, Elefant rein, Kühlschrank zu.
-
Mach's so, nur ohne XOR:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-255987-and-start-is-12.html
-
#include <stdio.h> #include <stdlib.h> int main(void) { FILE *quelle, *ziel; int c; char name_quelle[255], name_ziel[255]; printf("Name der Quelldatei (z.B. /home/user/Desktop/quelle.pdf) : "); scanf("%s",name_quelle); quelle=fopen(name_quelle,"rb"); if(quelle == NULL) { printf("Konnte %s nicht finden bzw. öffnen!\n",name_quelle); return EXIT_FAILURE; } else { printf("Name der Zieldatei (z.B. /home/user/Desktop/ziel.pdf) : "); scanf("%s",name_ziel); ziel=fopen(name_ziel,"w+b"); if(ziel==NULL) { printf("Konnte Zieldatei nicht erzeugen!\n"); return EXIT_FAILURE; } else { while( (c=getc(quelle)) != EOF) putc(c,ziel); } } return EXIT_SUCCESS; }
So hab mein cp...also denke das es so richtig ist zumindestens funktioniert es
-
Du solltest für beide fopen() am Ende jeweils ein fclose() machen, und ein fclose() zwischen Zeile 25 und 26.
Statt:
char name_quelle[255]; ... scanf("%s",name_quelle);
Besser:
char name_quelle[255]; ... scanf("%255s",name_quelle);
Oder doch nur 254? Keine Ahnung, musst du nachschlagen. Jedenfalls kannst du so Überläufe ausschliessen und am Rückgabewert von scanf() erkennen, ob zu viel Text eingegeben wurde.
Eigentlich geht das genauso gut auch ganz ohne scanf(), zB mit fgets().
-
Eigentlich geht das genauso gut auch ganz ohne scanf(), zB mit fgets().
Und eigentlich sogar ohne fgets(), weil ein richtiges cp die beiden Pfade in argv[1] und argv[2] hat.