Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Benötige hilfe für fwrite

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
24.04.2006, 21:06 Uhr
~Vendetta
Gast


Nabend,

ich wollte heute versuchen den Inhalt einer Variablen in eine .txt zu speichern,
nur komm ich gerade ned weiter was ich in fwrite dazuschreiben muss damit der Inhalt in die
.txt gespeichert wird und Borland Hilfe ist auch ned so aufschlusreich.
Hoffe ihr könnt mir helfen.

MfG


hier noch der quellcode


Code:
#include <stdio.h>

int main
{
   int b=22;

   FILE *stream;
   stream = fopen("c:\\texttest.txt", "w")
   fwrite();
   fclose(stream);
   getchar()
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.04.2006, 21:50 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Die MSDN ist eigentlich die beste Möglichkeit um so Sachen ach zu gucken:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_fwrite.asp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.04.2006, 22:00 Uhr
Helmut




C++:
#include <stdio.h>

int main()
{
   int b=22;

   FILE *stream;
   stream = fopen("c:\\texttest.txt", "w");
   fprintf(stream,"%d\n", b);
   printf("%d\n", b);
   fclose(stream);
   return 0;
}




Bearbeitung von Benutzer:

Hi!
Genauso schreiben und dann das ganze Erstellen und Programm ausführen!


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.04.2006, 22:09 Uhr
theosoft



ungetestet:

C++:
#include <stdio.h>
#include <iostream.h>

int main()
{
   int b=22;
   FILE *stream;
   stream = fopen("c:\\texttest.txt", "w");
   fwrite(&b, sizeof(b), 1, stream);
   fclose(stream);
// ----------------------------------------
   stream = fopen("c:\\texttest.txt", "r");
   int c;
   fread(&c, sizeof(c), 1, stream);
   fclose(stream);

   cout << c;
   getchar();
   return 0;
}

evt. setzt dich das auf die richtige spur.
--
ifS (immer fröhliches Schaffen)
theosoft
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.04.2006, 22:23 Uhr
~Vendetta
Gast


danke für eure antworten

@guybrush
die MSDN seite ist echt zimlich gut :p

@helmut
cool an printf hab ich noch garned gedacht

@theosoft
ah danke hast mich auf die richtige spur gebracht

danke nochma für eure schnelle hilfe !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.04.2006, 22:25 Uhr
~Vendetta
Gast


Nabend ,

hab jetzt bisl weiter gemacht und steh jetzt vor paar problemen bzw hab paar Fragen
zu meinem quellcode bei denen ich nicht weiterweis, weil der Lehrer heute krank war:

Code:
#include <iostream.h>
#include <iomanip.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <fstream>

void einzeldatei(void);
void verzeichnis(void);

int main()
{
char wahl;

//Eingabeaufforderung/Auswahl
cout<<"Bitte waehlen Sie was Sie machen wollen :"<<endl<<endl
<<"  <A> Eine Einzelne Datei einlesen."<<endl
<<"  <B> Ein ganzes Verzeichnis einlesen."<<endl
<<"  <C> Hilfe."<<endl
<<"  <D> Programm beenden."<<endl<<endl;
cin>>wahl;
clrscr();
switch (wahl)
{
  case 'a':
  case 'A': einzeldatei();
            break;

  case 'b':
  case 'B': verzeichnis();
            break;
}

getchar();
}


void einzeldatei(void)
{
//Variablen Deklaration
//Zaehlvariablen für Zeichen
int klein=0, gross=0, zahl=0, sonder=0, gesamt=0, zeilenu=0, leer=0;

//Eingabe des Dateipfades
char eingabe[30];
cout<<"Bitte geben Sie den Dateipfad ein: ";
gets (eingabe);
clrscr();

//Datei öffnen, auslesen und schließen
ifstream file (eingabe);
char buff;

while(file.get(buff))
{
  if(buff>=65 && buff<=90) gross++; //Großbuchstaben ohne Umlaute
  else if(buff>=97 && buff<=122) klein++; //Kleinbuchstaben ohne Umlaute
  else if(buff>=48 && buff<=57) zahl++; //Ziffern
  else if(buff==10) zeilenu++; //Zeilenumbrueche
  else if(buff==32) leer++; //Leerzeichen
  else if(buff==-28) klein++; //Umlaut a
  else if(buff==-60) gross++; //Umlaut A
  else if(buff==-10) klein++; //Umlaut o
  else if(buff==-42) gross++; //Umlaut O
  else if(buff==-4) klein++; //Umlaut u
  else if(buff==-36) gross++; //Umlaut U
  else sonder++; //Sonderzeichen
}
file.close();

//Ausgabe
gesamt = klein+gross*2+zahl+sonder*2+zeilenu+leer;

cout<< "Ihre erreichten Anschlaege im Detail sind:"<<endl;
cout<< "------------------------------------------"<<endl<<endl;
cout<< "Grossbuchstaben: " << gross <<endl;
cout<< "Kleinbuchstaben: " << klein <<endl;
cout<< "Zahlen: " << zahl <<endl;
cout<< "Zeilenumbrueche: " << zeilenu <<endl;
cout<< "Sonderzeichen: " <<sonder<<endl<<endl;
cout<< "Gesamtanschlagszahl: " <<gesamt<<endl<<endl<<endl;

//Eingabe des Speicherpfades
char speicherpfad[30];
cout<<"Bitte geben Sie den Speicherpfad fuer die Ergebnisdatei ein: ";
gets (speicherpfad);
clrscr();

FILE *stream;
stream = fopen(speicherpfad, "a+");
fprintf(stream,"%d\n", gross);
fprintf(stream,"%d\n", klein);
fprintf(stream,"%d\n", zahl);
fprintf(stream,"%d\n", zeilenu);
fprintf(stream,"%d\n", sonder);
fprintf(stream,"%d\n", gesamt);
fclose(stream);

}



Beim ersten Teil der Aufgabe muss ich ne .txt Datei auslesen und bestimmen wieviele Grossbuchstaben usw darin enthalten sind, dann muss man einen Speicherort mit dem Namen einer .txt Datei auswählen die dann erstellt wird und in der das Ergebnis der Auslesung reingeschrieben wird. Nur das Problem ist das ich ned weis wie ich das hinbekomm das bei der Auswertung neben den blanken Zahlen auch die art halt z.B. Grossbuchstabe steht in der .txt datei.




Code:
void verzeichnis(void)
{
//Variablen Deklaration
//Zaehlvariablen für Zeichen
int klein=0, gross=0, zahl=0, sonder=0, gesamt=0, zeilenu=0, leer=0;

//Eingabe des ersten Dateipfades um Verzeichnis einzulesen
char eingabe[30];
cout<<"Bitte geben Sie den Dateipfad der ersten Datei an,"<<endl
     <<"um das Gesamte Verzeichnis auszulesen: ";
gets (eingabe);
clrscr();

//Datei öffnen, auslesen und schließen
ifstream file (eingabe);
char buff;

while(file.get(buff))
{
  if(buff>=65 && buff<=90) gross++; //Großbuchstaben ohne Umlaute
  else if(buff>=97 && buff<=122) klein++; //Kleinbuchstaben ohne Umlaute
  else if(buff>=48 && buff<=57) zahl++; //Ziffern
  else if(buff==10) zeilenu++; //Zeilenumbrueche
  else if(buff==32) leer++; //Leerzeichen
  else if(buff==-28) klein++; //Umlaut a
  else if(buff==-60) gross++; //Umlaut A
  else if(buff==-10) klein++; //Umlaut o
  else if(buff==-42) gross++; //Umlaut O
  else if(buff==-4) klein++; //Umlaut u
  else if(buff==-36) gross++; //Umlaut U
  else sonder++; //Sonderzeichen
}
file.close();

//Ausgabe und Speichern in .txt Datei
gesamt = klein+gross*2+zahl+sonder*2+zeilenu+leer;

FILE *stream;
stream = fopen("c:\\Auswertung.txt", "a+");
fprintf(stream,"%d\n", gesamt);
printf("%d\n", gesamt);
fclose(stream);
}



Beim zweiten Teil der Aufgabe sollen mehrere .txt Dateien die alle den gleichen Namen haben (man kann auswählen wie die Dateien heissen) auser am ende ne Zahl also z.B. testdatei1.txt oder testdatei2.txt ausgelesen werden und dann die Gesamtanschläge in eine neue .txt Datei geschrieben werden die man auswählen kann bzw erstellen kann.
Das Problem ist wie ich die Zahl in der .txt Dateibezeichnung durch ne if Anweisung so oft wiederholen kann mit dem Array das alle Dateien ausgelesen werden (ich hab noch vor, ne eingabe zu machen wieviele .txt Dateien ausgelesen werden sollen)


Und als letztes problem ist das wir dieses Projekt auf RTF, also Wordpad dateien ausweiten müssen, nur das problem ist ich hab keinen plan wie man RTF Dateien auslesen kann.
Hab schon bei MSDN geschaut nur da gabs leider nichts Brauchbares.

Ich hoff ihr könnt mir Paar hilfen geben.

MfG
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.04.2006, 04:34 Uhr
Helmut




C++:

   int DateiNR = 1; //Erste DateiNR
    char speicherpfad[256];
    
    do{
       sprintf(speicherpfad, "Dateiname%d.txt", DateiNR);
       //...FILE* stream = fopen(speicherpfad, "a+");
    
       //...Hier Code zum Lesen und/oder Schreiben der Datei

       //...fclose(stream);
    }while(++DateiNR <= 1577); //1577 = letzte DateiNR
                             // kannst auch weniger eintragen!




Hi!
Noch ne coole Variante von printf sprintf
Du wirst es schaffen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.04.2006, 16:10 Uhr
~Vendetta
Gast


Moin,

hab jetzt mal des so bisl geändert wie du meintest und des kam des dabei raus ->


Code:
void verzeichnis(void)
{

int DateiNR = 1;
    char speicherpfad[256];

  cout<<"speicherpfad eingeben: ";
gets (speicherpfad);

do{
sprintf(speicherpfad, "c:\ctest%d.txt", DateiNR);

FILE *stream;
stream = fopen(speicherpfad, "a+");

int klein=0, gross=0, zahl=0, sonder=0, gesamt=0, zeilenu=0, leer=0;

ifstream file (speicherpfad);
char buff;

while(file.get(buff))
{
  if(buff>=65 && buff<=90) gross++;
  else if(buff>=97 && buff<=122) klein++;
  else if(buff>=48 && buff<=57) zahl++;
  else if(buff==10) zeilenu++;
  else if(buff==32) leer++;
  else if(buff==-28) klein++;
  else if(buff==-60) gross++;
  else if(buff==-10) klein++;
  else if(buff==-42) gross++;
  else if(buff==-4) klein++;
  else if(buff==-36) gross++;
  else sonder++;
}
file.close();

gesamt = klein+gross*2+zahl+sonder*2+zeilenu+leer;

fprintf(stream,"%d\n", gesamt);
printf("%d\n", gesamt);
fclose(stream);

}while(++DateiNR <= 2);

}



hab 2 dateien mit dem namen ctest1.txt und ctest2.txt gemacht, des Problem ist jetzt das die Nicht richtig ausgelesen werden und immer das falsche rauskommt und dass das Ergebnis nicht in die Datei gespeichert wird. Bin grad zimlich auf dem Holzweg.

MfG
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.04.2006, 17:12 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.04.2006, 06:19 Uhr
Helmut



Hallo !

C++:
void verzeichnis(void)
{
    
    cout<<"speicherpfad eingeben: ";
    gets (speicherpfad);    //Fehler! gets() schreibt in speicherpfad
                            //!!!nur sprintf() darf in speicherpfad schreiben
                            // also char speicherpfad_2[256];
                            // und  gets (speicherpfad_2); einfügen
/*Was genau gibst du hier über die Tastatur ein - du mußt es per Kommentar
//hinschreiben, der der dir helfen soll muß es wissen. */

    FILE* stream;/*verschoben - besser außerhalb der Schleife*/
    int DateiNR = 1;
    char speicherpfad[256];

    do{
        sprintf(speicherpfad, "c:\ctest%d.txt", DateiNR);
        /*FILE *stream; nach oben verschoben*/
        stream = fopen(speicherpfad, "a+");

        int klein=0, gross=0, zahl=0, sonder=0, gesamt=0, zeilenu=0, leer=0;

        ifstream file(speicherpfad);   //  ifstream file(speicherpfad_2);
        char buff;

        while(file.get(buff))
        {
            if(buff>=65 && buff<=90) gross++;
            else if(buff>=97 && buff<=122) klein++;
            else if(buff>=48 && buff<=57) zahl++;
            else if(buff==10) zeilenu++;
            else if(buff==32) leer++;
            else if(buff==-28) klein++;
            else if(buff==-60) gross++;
            else if(buff==-10) klein++;
            else if(buff==-42) gross++;
            else if(buff==-4) klein++;
            else if(buff==-36) gross++;
            else sonder++;
        }
        file.close();

        gesamt = klein+gross*2+zahl+sonder*2+zeilenu+leer;

        fprintf(stream,"%d\n", gesamt);
        printf("%d\n", gesamt);
        fclose(stream);

    }while(++DateiNR <= 2);
}




Du mußt überall auskommentieren, was per Tastatur dem Programm mitgeteilt wird
damit der, der dir helfen soll Durchblick hat.
z.B.
cout<<"Bitte geben Sie den Dateipfad der ersten Datei an,"<<endl
<<"um das Gesamte Verzeichnis auszulesen: ";

wenn hier der Dateipfad der ersten Datei tatsächlich richtig eingegeben
wurde (immer Auskommentieren!) Wo steht der Programmcode dafür
ein gesamtes Verzeichnis auszulesen??

Man kann den zweiten Schritt nicht vor dem ersten tun - als erstes müssen
alle Dateien die hier ausgelesen werden sollen, erstellt und mit Inhalt versehen
werden. Deine Funktion einzeldatei(); leistet dies noch nicht - es gibt
noch zu tun für dich.
PS fprintf(stream, "Kleinbuchstaben: %d\n", klein);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: