[C/C++] Daten von Datei1 in Datei2 schreiben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Floppy87, 7. Dezember 2010 .

Schlagworte:
  1. 7. Dezember 2010
    Daten von Datei1 in Datei2 schreiben

    nabend zusammen,

    bräuchte mal wieder eure kompetente hilfe!!

    wir haben eine datei Binärdatei namens Linien.pra gegeben!
    die beschreibt start und endpunkte und farben von linien.
    Code:
    short x1, y1, x2, y2; // Start- und Endpunkt
    unsigned char R, G, B; // Farbkomponenten
    dafür sollen wir einen struct typ erstellen:
    Code:
    typedef struct _binar
    {
     short x1;
     short y1;
     short x2;
     short y2;
    
     unsigned char rot;
     unsigned char gelb;
     unsigned char blau;
    } binar;
    und nur zu meiner eigentlichen frage...wir sollen die daten aus linien.pra mithilfe der struct fkt in eine neue textdatei schreiben...und da hab ich so meine probleme...vllt könnt ihr mir helfen und nützliche tipps geben?!

    angefangen hab ich schon, aber ich komm nicht weiter...
    Code:
    int _tmain(int argc, _TCHAR* argv[])
    {
     FILE *myfile1;
     FILE *myfile2;
     char c;
    
     myfile1 = fopen("Linien.pra","rb");
     // Abfrage ob Linien.pra existiert
     if (!myfile1)
     {
     puts("Linien.pra nicht vorhanden\n");
     exit(0);
     }
     
     // Schleife zum kopieren der daten von Linien.pra nach Linien.txt 
     // solange c ungleich ende der datei ist
     do
     {
     
    
     }
     while (c!=EOF);
     // Dateien werden geschlossen
     fclose(myfile1);
     fclose(myfile2);
     
     return 0;
    }
     
  2. 7. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben

    in welchem format sollst du denn die werte in die txt speichern?

    fread - C++ Reference
    fwrite - C++ Reference
     
  3. 7. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben


    format wäre so:
    Code:
    75 399 680 399 128 255 255
    75 389 276 389 108 215 215
    276 389 377 214 108 215 215
    377 214 478 388 108 215 215
     
  4. 7. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben

    Dein Ansatz war doch schon richtig, mit ein bissche suchen wärste auf fgetc(), fputc() von allein gekommen, aber immerhin hast Du ja schon was in der richtigen Richtung vorliegen.
     
  5. 8. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben

    danke...und wenn du das jetzt noch etwas weiter ausführen könntest...?(
    Code:
    #include "stdafx.h"
    #include <stdlib.h>
    #include <stdio.h>
    
    
    typedef struct _binar
    {
     short x1;
     short y1;
     short x2;
     short y2;
    
     unsigned char rot;
     unsigned char gelb;
     unsigned char blau;
    } binar;
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
     FILE *myfile1;
     FILE *myfile2;
     char c;
     char a;
    
     myfile1 = fopen("Linien.pra","rb");
     myfile2 = fopen("Linien.txt","rw");
     
     // Abfrage ob Linien.pra und Linien.txt existieren
     if (!myfile1)
     {
     puts("Linien.pra nicht vorhanden\n");
     exit(0);
     }
     if (!myfile2)
     {
     puts("Linien.txt nicht vorhanden\n");
     exit(0);
     }
     
     // Schleife zum kopieren der daten von Linien.pra nach Linien.txt 
     do
     {
     do 
     {
     c=fgetc(myfile1.Linien.pra[a]);
     a++;
     fprintf(myfile2,"%s ",c);
    
     } while (a != EOF); 
    
     }
     
     // solange c ungleich ende der datei ist
     while (c != EOF);
     
     // Dateien werden geschlossen
     fclose(myfile1);
     fclose(myfile2);
     
     return 0;
    }
    will halt erreichen, dass c den wert von a bekommt (a = eine position in der datei linien.pra)
    und dann will ich einfach nur c in meine linien.txt schreiben...
    wie gesagt, weiss halt nicht wie das geht
     
  6. 8. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben

    versuch mal zu erklären, warum du hier "c" und "a" auf EOF prüfst und warum du dafür jeweils eine eigene schleife verwendest.

    tipp: prüf deine deklarationen nochmal genau
     
  7. 8. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben

    falls du die deklarationen der struktur meinst...die sind vorgegeben!

    hmm...also wenn du so fragst, dann ist eine der schleifen bestimmt quatsch :S
     
  8. 8. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben

    Pseudocode:

    Code:
    Datei x, y binär öffnen // fopen
    Größe der Quelldatei ermitteln // fseek + ftell
    
    Solange Quellgröße nicht erreicht
     Lese Zeichen aus Quelldatei // fgetc
     Schreibe Zeichen in die Zieldatei // fputc
    
    Schleiße Datei x, y // fclose
    
     
  9. 8. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben

    Spoiler
    als kleine hilfe um die variablen in deiner struktur zu füllen:
    Code:
    short fread_short(FILE *fp)
    {
     // read 2bytes and convert to short
     unsigned char b[2];
     b[0] = fread_uchar(fp);
     b[1] = fread_uchar(fp);
    
     return (short) (b[0] << b[1]);
    }
    
    unsigned char fread_uchar(FILE *fp)
    {
     // read 1byte and convert to unsigned char
     return (unsigned char) fgetc(fp);
    }

    ich würde dir auch raten die struktur wirklich zu verwenden, denn das macht das ganze viel übersichtlicher wenn alles beinander ist.

    Code:
    binar b;
    b.x1 = ...
    b.y1 = ...
     
  10. 8. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben

    Das ist Quark murdoc. Wenn die Daten binär genauso liegen wie er sie in der Struktur definiert hat, kann er auch einfach per fread die Struktur füllen.
     
  11. 8. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben

    das geht wirklich so einfach? also so:

    Code:
    binar b;
    fread(&b, 1, sizeof(binar), myfile1);
    kannst du das kurz erklären, würde mich auch sehr interessieren ^^
    nice wieder was gelernt.
     
  12. 8. Dezember 2010
    AW: Daten von Datei1 in Datei2 schreiben

    Du liest ja ne feste Anzahl von Bytes und die Struktur ist ja auch nur eine Ansammlung von Bytes. Es muss nur die Reihenfolge passen. Probleme gibts dann bei dyn. Zeichenketten, da muss man das anders regeln.
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.