Name in Datei schreiben

Schnelle objektorientierte, kompilierende Programmiersprache.
G_loW
Beiträge: 29
Registriert: Mi Jan 14, 2009 10:05 pm

Name in Datei schreiben

Beitrag von G_loW » Fr Jun 26, 2009 4:21 pm

Hi Leutz,
ich hab ein kleines Proplem,
ich will einen namen in einer textdatei speichern und weiß net wie. :?

aus dem wiki werde ich auch net schlau.
da gibts zwar einige Beispiele aber die klappen bei mir net.

( :oops: :oops: bestimmt is die lösung ganz einfach, ich komm nur net drauf :oops: :oops: )

Code: Alles auswählen

#include <iostream>
#include <cstdio>
////////////////////////////////////////////
int main (void)
{
    char Name[8];

    FILE *file = fopen("testfile.txt", "w+");

    std::cout<< "Bitte Name Eingeben \n";
    std::cin>> Name;


    // Hir Name in File schreiben


    std::cout<< Name;

    fclose(file);

    return 0;
}
use Linux
use Code::Blocks

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Name in Datei schreiben

Beitrag von Xin » Fr Jun 26, 2009 4:37 pm

G_loW hat geschrieben:aus dem wiki werde ich auch net schlau.
da gibts zwar einige Beispiele aber die klappen bei mir net.
Welche Seiten hast Du besucht, welche Beispiele funktionieren nicht? Und was verstehst Du nicht.
Das wäre wichtig, damit wir die Seiten verbessern können.

Code: Alles auswählen

#include <iostream>
#include <cstdio>
////////////////////////////////////////////
int main (void)
{
    char Name[8];

    FILE *file = fopen("testfile.txt", "w+");

    std::cout<< "Bitte Name Eingeben \n";
    std::cin>> Name;

    // Möglichkeit 1:
    fprintf( file, "%s", Name );

    // Möglichkeit 2:
    // fwrite( Name, strlen( Name ), 1, file );

    std::cout<< Name;

    fclose(file);

    return 0;
}
Grundsätzlich wäre es natürlich auch nicht schlecht, wenn Du hier in beiden Fällen mit Streams arbeitest:

Code: Alles auswählen

ofstream fout( "Text.txt" );
fout << Name;
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

G_loW
Beiträge: 29
Registriert: Mi Jan 14, 2009 10:05 pm

Re: Name in Datei schreiben

Beitrag von G_loW » Fr Jun 26, 2009 4:49 pm

Das meine ich:
http://tutorial.proggen.org/doku.php?id ... io:freopen

Bei mir kommt immer "Datei konnte nicht geöfnet weden"

ich hab noch nie mit streams gearbeitet :oops:
use Linux
use Code::Blocks

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Name in Datei schreiben

Beitrag von Xin » Fr Jun 26, 2009 5:20 pm

G_loW hat geschrieben:Das meine ich:
http://tutorial.proggen.org/doku.php?id ... io:freopen
Ich schaue mir das nachher mal an.
G_loW hat geschrieben:Bei mir kommt immer "Datei konnte nicht geöfnet weden"
ich hab noch nie mit streams gearbeitet :oops:
cin und cout sind auch Streams.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

G_loW
Beiträge: 29
Registriert: Mi Jan 14, 2009 10:05 pm

Re: Name in Datei schreiben

Beitrag von G_loW » Fr Jun 26, 2009 5:22 pm

ok, dann noch ne frage:

Was sind Streams?
use Linux
use Code::Blocks

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Name in Datei schreiben

Beitrag von Xin » Fr Jun 26, 2009 5:59 pm

G_loW hat geschrieben:ok, dann noch ne frage:

Was sind Streams?
Streams beschreiben Datenströme. Du bindest sie ja bereits ein:

Code: Alles auswählen

#include <iostream>[/quote]

In C++ verwendest Du IoStreams, in C FILE-Streams. Die C++ Streams basieren (i.d.R.) auf den C-FILE-Streams, sie kommen sich also nicht irgendwo in die Quere, doch würde man üblicherweise sich für eine der beiden Streamsarten entscheiden. Also entweder cin/cout und die File-Streams (ifstream und ofstream) oder man verwendert die C-FILE-Streams (printf, fopen, fclose...)

Gemischt ist kein Problem (mache ich auch eher so, wie ich es brauche), es ist aber unüblich und eher weniger gern gesehen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Name in Datei schreiben

Beitrag von nufan » Fr Jun 26, 2009 6:02 pm

G_loW hat geschrieben:Das meine ich:
http://tutorial.proggen.org/doku.php?id ... io:freopen

Bei mir kommt immer "Datei konnte nicht geöfnet weden"
Das liegt nicht an der Datei sondern am falschen if.

Code: Alles auswählen

if( !freopen( filename, "w", stdout ) )
    printf( "Dieser Text landet in einer Datei\n" );  // erfolgreich geöffnet
freopen gibt bei Fehlern NULL zurück. Mal angenommen die Datei kann (aus welchem Grund auch immer) nicht geöffnet werden. !NULL ist auf jeden Fall nicht falsch. Das heißt wird die Datei korrekt geöffnet ergibt das erste if falsch und die Fehlermeldung im else wird ausgegeben. Außerdem wird die Datei bei dir doch angelegt, oder? Nimmst du also das ! weg, funktioniert es und printf (das normal auf den Bildschirm schreibt) schreibt in die Datei.

Wird natürlich sofort ausgebessert...

G_loW
Beiträge: 29
Registriert: Mi Jan 14, 2009 10:05 pm

Re: Name in Datei schreiben

Beitrag von G_loW » Fr Jun 26, 2009 8:19 pm

Ok, es klappt. :mrgreen:

ich hab die erste Variante genommen da diese mir einfacher erscheind.

Allerdings hab ich damit ein proplem.

[quote="Xin]

Code: Alles auswählen

ofstream fout( "Text.txt" );
fout << Name;
[/quote]

Code::Blocks sagt mir: "ofstream was not declared in this scope"

Allerdings gehts auch ohne, oder ist das so wichtig?
use Linux
use Code::Blocks

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Name in Datei schreiben

Beitrag von nufan » Fr Jun 26, 2009 8:32 pm

G_loW hat geschrieben:Code::Blocks sagt mir: "ofstream was not declared in this scope"
Der ganze Code wäre von Vorteil. ;)
Wenn du Xin's Code genommen und die beiden Zeilen reinkopiert hast musst du noch den Namespace (std) für ofstream angeben.

G_loW
Beiträge: 29
Registriert: Mi Jan 14, 2009 10:05 pm

Re: Name in Datei schreiben

Beitrag von G_loW » Fr Jun 26, 2009 9:04 pm

So, jetz hab ich es fast^^
Ich benutze jetzt "ofstream" (is einfacher :mrgreen: )

Die letzte frage: Muss ich "ofstream" auch wieder schließen ?
use Linux
use Code::Blocks

Antworten