Jan-Michael
Aktives Mitglied
Thread Starter
- Dabei seit
- 28.02.2005
- Beiträge
- 397
- Reaktionspunkte
- 0
Hallo Leute!
Da ich in den letzten Tagen ein bischen zuviel Zeit hatte habe ich mich aufgemacht, das cp-Kommando der Bash zumindest annährend in der Funktion zu klonen. Prinzipiell ist das ja auch kein Problem und mit ein paar Zeilen zu bewältigen. Nur ist eine Lösung der Sorte:
int c; while((c=fgetc(in)!=EOF) fputc(c, out);
nicht zwingend effektiv, da sich der Lese/Schreibkopf der HD zu oft hin-und herbewegen muss. Ein Buffer, wie ich ihn im folgenden Listing verwendet habe wäre da schon eine tolle Sache, wenn es da nich doch noch einen Fehler im folgenden Programm gibt, den ich selbst auch nach langer Suche nicht finden kann. Da ich aber schon solange herumüberlegt und probiert habe kann ich das Problem auch nicht mehr beiseite legen. Deshalb wäre ich euch für eine mögliche Lösung bzw. Erläuterung des Fehlers sehr dankbar.
Da ich in den letzten Tagen ein bischen zuviel Zeit hatte habe ich mich aufgemacht, das cp-Kommando der Bash zumindest annährend in der Funktion zu klonen. Prinzipiell ist das ja auch kein Problem und mit ein paar Zeilen zu bewältigen. Nur ist eine Lösung der Sorte:
int c; while((c=fgetc(in)!=EOF) fputc(c, out);
nicht zwingend effektiv, da sich der Lese/Schreibkopf der HD zu oft hin-und herbewegen muss. Ein Buffer, wie ich ihn im folgenden Listing verwendet habe wäre da schon eine tolle Sache, wenn es da nich doch noch einen Fehler im folgenden Programm gibt, den ich selbst auch nach langer Suche nicht finden kann. Da ich aber schon solange herumüberlegt und probiert habe kann ich das Problem auch nicht mehr beiseite legen. Deshalb wäre ich euch für eine mögliche Lösung bzw. Erläuterung des Fehlers sehr dankbar.
Code:
#include <stdio.h>
#define BUFFER 20
int main(int argc, char *argv[]) {
int c[BUFFER+1], i, len;
FILE *in=fopen(argv[1], "r");
FILE *out=fopen(argv[2], "w");
read_write:
for(i=0; ((c[i]=fgetc(in))!=EOF) && (i<=BUFFER); i++) len=i;
for(i=0; i<=len; i++) fputc(c[i], out);
if(len==BUFFER) goto read_write;
fclose(in); fclose(out);
}