Richtige Syntax benötigt!

Dieses Thema im Forum "C/C++" wurde erstellt von matzeed7, 26.06.2007.

  1. #1 matzeed7, 26.06.2007
    Zuletzt bearbeitet: 26.06.2007
    matzeed7

    matzeed7 Mitglied

    Dabei seit:
    28.10.2006
    Beiträge:
    38
    Zustimmungen:
    0
    Hallo,

    ich habe mal eine Frage! ich möchte in meinem
    Hauptprogram eine Funktion aufrufen und dieser als Argument
    eine Datei übergeben. Die aufgerufene Funktion soll dann
    was in die geöffnete datei schreiben.

    hier mal der Funktionaufruf aus der main()
    Code:
    int main() {
      fstream datei;
      	// Textdatei zum schreiben öffnen.
      		datei.open("Ausgabe.txt", ios::out);
    
       writeinfile(&datei, "noch a test");
    	
    	
      datei.close();
    
    	return 0;
    }
    
    nun zu meinem Problem, meine Funktion
    Code:
    void writeinfile(fstream  *file, string text){
    	*file<<text<<endl;		
    }
    
    funktioniert, nun möchte ich aber auch die membermethoden der datei
    benutzen also zB
    Code:
    bool test=datei.bad();
    
    nun meine Frage:
    wie kann ich die Zeile bool test=datei.bad(); aus den Hauptprogramm
    in die funktion writeinfile(..) einbringen?
    ich hatte schon

    Code:
    bool test=*file->bad();
    
    probiert aber es kommt die fehlermeldung

    error: invalid type argument of `unary *'


    Danke schon mal an Euch!
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    PS:

    ich habe jetzt mal
    getestet und der compiler bringt keinen Fehler,
    kann mir wer erklären warum ich mal * schreiben muss und mal nicht.

    ich dachte immer das wenn man * file schreibt einen pointer hat
    und wenn ich die funktion aufrufe muss ich den pointer *file die adresse
    also &datei übergeben so das er nun file auf meine datei zeigt
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 SkydiverBS, 26.06.2007
    Zuletzt bearbeitet: 26.06.2007
    SkydiverBS

    SkydiverBS Tripel-As

    Dabei seit:
    15.01.2005
    Beiträge:
    207
    Zustimmungen:
    0
    Ort:
    Freising
    Grundsätzlich muss man immer den Dereferenzierungsoperator (*) verwenden, wenn man auf das Objekt zugreifen will auf das der Zeiger verweist.

    Wenn man nun Funktionen oder Variablen eines Objekts, bzw. einer Klasse erreichen möchte, verwendet man den Punktoperator (.). Das funktioniert auch bei Zeigern. Beispiel:
    Code:
    (*ptr).var
    Da das recht umständlich und schlecht zu lesen ist, wurde der Pfeiloperator (->) eingeführt. Wird diese Schreibweise verwendet, lässt man das Sternchen (*) weg, da der Pfeiloperator automatisch dereferenziert. Beispiel:
    Code:
    ptr->var
    Ich hoffe ich habe es einigermaßen verständlich erklärt!?

    Bei deinem Beispiel fehlen dir also die Klammern und du müsstest den Punktoperator verwenden:
    Code:
    bool test=[COLOR="Red"]([/COLOR]*file[COLOR="Red"]).[/COLOR]bad();
    Alternativ kannst du auch den Pfeiloperator einsetzen:
    Code:
    bool test=file[COLOR="Red"]->[/COLOR]bad();
    Gruß,
    Philip
     
  4. #3 matzeed7, 27.06.2007
    matzeed7

    matzeed7 Mitglied

    Dabei seit:
    28.10.2006
    Beiträge:
    38
    Zustimmungen:
    0
    ahhhh

    habe verstanden!

    ich danke dir!!!!!!!

    gruss matze
     
  5. Yellow

    Yellow Doppel-As

    Dabei seit:
    04.06.2007
    Beiträge:
    149
    Zustimmungen:
    0
    Ort:
    Bad Arolsen
    Code:
    void schreiben(FILE *f,char *s) {
       f = fopen(f,"r+"); // Oder "w+"
       if(NULL==F) {
          perror("ERROR: Fehler beim öffnen der Datei ");
          return EXIT_FAILURE;
       }
       fputs(s,f); // Schreibt deinen String in die Datei!
       fclose(f);
    }
    
    -----------
    Aber das ist C und du will C++ oder?

    GreeZ Yellow
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Richtige Syntax benötigt!

Die Seite wird geladen...

Richtige Syntax benötigt! - Ähnliche Themen

  1. Digital-Manifest für den richtigen Umgang mit Big Data und Künstlicher Intelligenz

    Digital-Manifest für den richtigen Umgang mit Big Data und Künstlicher Intelligenz: Das Digital-Manifest, in dem Wissenschaftler vor ernsten Gefahren für Freiheit und Demokratie durch Big Data und Künstliche Intelligenz warnen,...
  2. Web & DB - richtige Open Source Linux Cloud Komponenten

    Web & DB - richtige Open Source Linux Cloud Komponenten: Hallo, wir wollen zum Testen auf einer privat Cloud Instanz (erste Erfahrung) eine Web & DB Anwendung auf einem Root System oder virtuellen...
  3. Artikel: Disaster Recovery mit Hilfe der richtigen Backup-Strategie

    Artikel: Disaster Recovery mit Hilfe der richtigen Backup-Strategie: Unter dem Begriff Disaster Recovery versteht man in der Informationstechnik die Notfallwiederherstellung nach einem Ausfall von Hardware, Software...
  4. GitHub hilft Entwicklern beim Finden der richtigen Open-Source-Lizenz

    GitHub hilft Entwicklern beim Finden der richtigen Open-Source-Lizenz: GitHub hat zwei neue Webseiten »ChooseALicense.com« und »AddALicense« ins Netz gestellt, die Entwickler darin unterstützen sollen, für Ihr Projekt...
  5. suche das richtige Unix/Linux Betriebsystem für mich

    suche das richtige Unix/Linux Betriebsystem für mich: Hallo, ich suche das richtige Unix/Linux Betriebsystem für mich. Ich hatte mal etwas Linux gemacht, aber bei den Dschungel an Distributoren,...