dateien
-
hätte eine frage vil könnte mir jemand helfen??
muss ein pr schreiben das aus zwei dateien integer zahlen herausliest (zahlen sind sortiert) und sie sortiert in eine dritte datei schreibt!wobei die eine datei länger sein kann wie die andere und umgekehrt!
ich hab mal angefangen und komm nicht mehr weiter!
hab eine func geschrieben fürs einlesen in eine datei und auslesen wieder...int i=0;
int write_t(char filename[50]){
FILE *fp;
char feld[20];
char b;
int i=0;fp = fopen(filename,"w");
if(fp != NULL){
printf("Bitte sortiert eingeben (b_beenden): ");
scanf("%s", feld);
while(feld[0] != 'b'){
fprintf(fp,"%s", feld);
printf("Bitte sortiert eingenen (b_beenden): ");
scanf("%s", feld);
i++;
}
printf("Anzahl der Eingegebenen Werte %d!\n", i);
printf("Datei wurde angelegt!\n\n");
fclose(fp);
} else {
printf("Error!");
}
return i;
}void read_in(char filename[50]){
FILE *fp;
char buf[100];fp = fopen(filename, "r");
if((fgets(buf,100, fp)) != NULL){
printf("%s", buf);
printf("\nDatei wurde gelesen!\n\n");
fclose(fp);
} else {
printf("Error!");
}
}void mix_t(){
FILE *fp;
char filename1[50];
char filename2[50];
char filename3[50];
char buf[100];printf("Welche Files sollen gemischt werden werden? ");
scanf("%s", &filename1);
printf("Welche Files sollen gemischt werden werden? ");
scanf("%s", &filename2);fp = fopen(filename3, "w");
if(fp != NULL){
fprintf(fp,"%s", buf);
}}
int main(int argc, char *argv[]){
char filename[50];
printf("Bitte geben Sie den Filenamen ein: ");
scanf("%s", &filename);
write_t(filename);
read_in(filename);printf("Bitte geben Sie den Filenamen ein: ");
scanf("%s", &filename);
write_t(filename);
read_in(filename);system("PAUSE");
return 0;
}vil kann mir wer weiter helfen??
mfg
-
Wenn die beiden Dateien sortiert sind geht das recht einfach - du merkst dir die jeweils aktuelle Zahl aus beiden Dateien und schreibst immer die größere von beiden in die Zieldatei:
int val1,val2; fscanf(fin1,"%d",&val1); fscanf(fin2,"%d",&val2); while( !feof(fin1) && !foef(fin2) ) { if(val1<val2) { fprintf(fout,"%d ",val1); fscanf(fin1,"%d",&val1); } else { fprintf(fout,"%d ",val2); fscanf(fin2,"%d",&val2); } } //jetzt mußt du nur noch die Restdaten aus der Datei kopieren, die noch nicht leer ist (welche das ist, erfährst du mit feof())
-
aha danke =)!