Fehler bei fprintf



  • Hallo @ all!

    Ich habe 2 Fehler in diesem Quellcode laut Compiler.

    #include <iostream>
    #include <string>
    #include "string.h"
    using namespace std;
    
    int main()
    {
        string Bezeichnung[100];
       string Preis[100];
        int aus,P[100],i;
    
       PLU_Nummer PLU;
       FILE *pf;
       pf= fopen("PLU.txt","w+");
    
       for(i=0;i<=99;i++)
       {
       P[i]=i;
       PLU.setPlu( P[i],i);
       fprintf (P[i]);
       PLU.setBez (0,i);
       fprintf ("0");
       PLU.setPreis (0,i);
    
       }
    

    Und zwar bekomme ich die Fehlermeldungen:

    • *\main.cpp(20) : error C2660: 'fprintf' : Funktion akzeptiert keine 1 Parameter
    • *\main.cpp(22) : error C2660: 'fprintf' : Funktion akzeptiert keine 1 Parameter

    Kann einer helfen wie ich die Fehler weg bekomme?

    EditBySideWinder: Code-Tags richtiggestellt!

    [ Dieser Beitrag wurde am 27.12.2002 um 13:44 Uhr von SideWinder editiert. ]



  • Du sagst fprintf zwar, was geschrieben werden soll, aber nicht wohin. Den dazugehörigen FILE-Zeiger musst du schon auch noch angeben, und zwar als ersten Parameter.



  • Wie jetzt kann du mir das mal für die erste Fehlermeldung geben. der File müsste in PF stehen.



  • schau doch mal auf msdn.microsoft.com unter fprintf nach, da wirst du folgendews finden:

    int fprintf( FILE *stream, const char *format [, argument ]...);

    Return Value

    fprintf returns the number of bytes written. fwprintf returns the number of wide characters written. Each of these functions returns a negative value instead when an output error occurs.

    Parameters

    stream

    Pointer to FILE structure

    format

    Format-control string

    argument

    Optional arguments

    [edit]
    in deinem Quelltext müsste es also so aussehen:

    ...
    fprintf(pf, "0"); // erst deinen *FILE Zeiger pf und dann das was du schreiben willst...
    ...
    [/edit]

    mfg

    [ Dieser Beitrag wurde am 27.12.2002 um 13:18 Uhr von mrchat editiert. ]



  • sorry doppelpost

    mfg

    [ Dieser Beitrag wurde am 27.12.2002 um 13:17 Uhr von mrchat editiert. ]



  • Ja ich bitte um eins wenn möglich mit meinem Quelltext!!!!!!!



  • fprintf() schreibt den Text in Parameter 2 in den File in Parameter 1:

    FILE * fP;
    
    fP = fopen ( "myfile.dat" , "w+" ); 
    
    ...
    
    fprintf ( fP , "TEXT TEXT TEXT" );
    
    ...
    
    fclose ( fP );
    

    MfG SideWinder



  • danke SideWinder



  • Toll Sidewinder

    genau dasselbe hab ich auch geschrieben :-PPP

    Na ja egal

    mfg



  • @mrchat: Tip für die Zukunft: Ein Beispiel sagt mehr als tausend Bücher ;).

    MfG SideWinder



  • Wie mache ich das wenn ich Strings in eine Datei ausgeben will. Da Funktioniert keine fprintf??



  • Kommt darauf an welche Strings du schreiben möchtest:

    1.) die guten alten C-Strings:

    const char* str = "SideWinder";
    fprintf ( fP , str );
    

    2.) oder die neuen C++-Strings ( wobei man hier auch eher mit C++-Dateiverwaltung arbeiten sollte! ):

    std::string str = "SideWinder";
    fprintf ( fP , str.c_str () );
    

    MfG SideWinder



  • fprintf(fp,str);
    ist boese!

    stell euch vor str sieht so aus:
    "Ich bin mir 100%ig sicher, dass dies einen absturz verursacht!";
    und schon hat man ein Problem...

    also immer:

    printf("%s",str);
    oder natuerlich puts 😉



  • Ich habe es jetzt mit der Zweiten Varante von SideWinder geschrieben und bekomme jetzt beim ausführen, nach dem öffnem der Konsole, die Fehlermeldung:

    Test String.exe - Fehler in Anweisung

    Die Anweisung in "0x004249f0" verweist auf Speicher in "0x00000000". Der Vorgang "read" konnte nicht auf dem Speicher durchgeführt werden.

    Klicken Sie auf "OK", um das Programm zu beenden.
    Klicken sie auf "Abbrechen", um das Programm zu debuggen.

    Was kann ich dagegen machen?



  • Die Variante von Shade nehmen, er hat ja schon geschrieben, dass ich wieder zu schnell beim Posten war, und dass es so eben nicht geht ;).

    MfG SideWinder



  • Wie soll den das mit printf funktionieren?

    Ich habe es zur Zeit mit puts geschrieben,

    #include <iostream>
    #include <fstream>
    #include <string>
    #include "string.h"
    using namespace std;
    
    int main()
    {
        string Bezeichnung[100];
        string Preis[100];
        string P[100];
        string Rueckgabe[100];
        int aus,i;
    
        PLU_Nummer PLU;
        FILE *pf;
        pf = fopen("D:/Schule/Test/PLU.txt","w+");
        for(i=0;i<=99;i++)
        {
        P[i]=i;
        Rueckgabe[i]="NUll";
        PLU.setPlu( P[i],i);
        std::string p= P[i];
        puts (p.c_str());
        PLU.setBez (0,i);
        std::string r1 = Rueckgabe[i];
        puts (r1.c_str());
        PLU.setPreis (0,i);
        std::string r2 = Rueckgabe[i];
        puts (r2.c_str());
        }
    

    Nur das verursacht die selbe Fehlermeldung als die, die ich im letzten Post beschrieben habe.



  • Ich habe meinen Code jetzt so verändert, dass er nicht mehr abstürtzt. Nur er gibt nur

    C
    0
    0
    

    dass in die Datei aus.
    Der Code lautet jetzt

    #include <iostream>
    #include <fstream>
    #include <string>
    #include "string.h"
    using namespace std;
    
    int main()
    {
    
        string Bezeichnung[100];
        double Preis[100];
        string P[100];
        string Rueckgabe[100];
        int aus,i;
    
        PLU_Nummer PLU;
    
        for(i=0;i<=99;i++)
        {
            P[i]=i;
            PLU.setPlu( P[i],i);
            PLU.setBez ("0",i);
            PLU.setPreis (0,i);
            {
                cout<<i<<endl;
                ofstream file("PLU.txt");
                file<<P[i]<<"\n"<<0<<"\n"<<0;
            }
    
        }
    

Anmelden zum Antworten