mini Problem mit fopen



  • Hi Leutz!

    Fopen geht jetzt super bei mir allerdings ahbe ich ein kleinens Proplem mit fprintf. Ich benutze 2 fprintfs. ich will das der 2. dein Ergebniss unter dem 1. schreibt das habe ich gemacht mit fprintf("\ny=%d", y); leider ignoriert der Compiler mein \n und klatscht es einfach hinten ran 😞 was kann ich da machen? wenn das dann geht frage ich mich auch wie er es wieder einliesst?
    fscanf("\ny=%d", &y); wird ja dann auch nicht gehen, oder?

    vielen Dank im Voraus! H@ckepeter



  • der 2. dein Ergebniss

    ich meinte Natürlich : der 2. SEIN Ergebniss



  • Habe ich meine Frage Falsch Formuliert? OK ich machs noch mal verständlicher:

    1. fprintf schreibtin Text Datei:

    x=12

    2. fprintf soll unter dem Text vom 1. schreiben:

    x=12
    y=44

    er macht es immer so:

    x=12y=44

    wenn ich in fprintf \n macht er nur ein schwarzes Vier Eck aber kein Zeilenumpruch. was für ein zeichen brauche ich für den Zeilenumbruch in fprintf? es wäre nicht schlecht wenn das zeichen dann auch bei fscanf funtzt.

    vielen Dank im Voraus H@ckepeter



  • eigentlich \n vieleicht geht das aber auch nur unter win.versuch mal \r



  • Unter Windows brauchst du meiner Ansicht nach beide Zeichen!?

    MfG SideWinder



  • Das gleiche nochmal

    #include <stdio.h>
    
    void save(int, int, const char*);
    void load(int*, int*, const char*);
    
    int main()
    {
     int x=12,y=44;
     save(x,y,"test.txt");
     x=0; y=0;                   // x,y ändern
     load(&x,&y,"test.txt");
     printf("\n x=%d, y=%d",x,y);
    }
    
    void save(int a, int b, const char* name)
    {
     FILE *fp;
    
     if((fp=fopen(name, "wb"))==NULL)
      exit(1);
     fprintf(fp,"x=%d%c%c",a,13,10);
     fprintf(fp,"y=%d",b);
     fclose(fp);
    }
    
    void load(int *a, int *b, const char *name)
    {
     FILE *fp;
    
     if((fp=fopen(name, "rb"))==NULL)
      exit(1);
     fseek(fp,2L,0);
     fscanf(fp,"%d",a);
     fseek(fp,4L,1);
     fscanf(fp,"%d",b);
     fclose(fp);
    }
    

    MfG Lem



  • @Len

    Hi Len ich muss mich wieder mal für deine Hielfe Bedanken!

    Leider geht das Programm nicht 😞 , mein Compiler sagt immer:

    [C++ Error]Unit1.cpp(20): Call to undefined function 'exit'.
    [C++ Error]Unit1.cpp(31): Call to undefined function 'exit'.

    Wenn ich allerdings exit(1); weg mache(im 1.Code wars ja auch nicht) startet zwar das Programm aber x und y sind gleich 0. Vieleicht liegts an meinem Compiler?

    Wenn du es nicht hinbekommst ist es auch nicht so schlim, bloss ich muss dann für jede Variable oder Optionseinstellung eine Eigene Datei Anfertigen.

    Trotzdem vielen dank!

    MFG H@ckepeter



  • Sorry Lem ich sehe gerade das ich deinen Namen falschen geschrieben habe 🙄 . Ich hoffen du hielfst mir trotzdem...



  • Du darfst exit(1); nicht einfach löschen. Borland hat exit() in stdlib.h, man sollte
    #include <stdlib.h> hinzufügen. Dann muß es gehen.

    Einen zweiten Compiler(IDE) kannst Du von http://www.bloodshed.net runterladen.

    MfG Lem



  • Hi Lem endlich geht ALLES 😃 ! Ich habe deinen Code noch etwas ergrössert:

    #include <stdlib.h>
    #include <stdio.h>
    void save(int a, int b, int c, int d, int e, int f,const char* name)
    {
     FILE *fp;
    
     if((fp=fopen(name, "wb"))==NULL)
      exit(1);
     fprintf(fp,"x1=%d%c%c",a,13,10);
     fprintf(fp,"y1=%d%c%c",b,13,10);
     fprintf(fp,"x2=%d%c%c",c,13,10);
     fprintf(fp,"y2=%d%c%c",d,13,10);
     fprintf(fp,"p=%d%c%c",e,13,10);
     fprintf(fp,"q=%d",f );
     fclose(fp);
    }
    
    void load(int *a, int *b,int *c, int *d,int *e, int *f, const char *name)
    {
     FILE *fp;
    
     if((fp=fopen(name, "rb"))==NULL)
      exit(1);
     fseek(fp,3L,0);
     fscanf(fp,"%d",a);
     fseek(fp,5L,1);
     fscanf(fp,"%d",b);
     fseek(fp,5L,1);
     fscanf(fp,"%d",c);
     fseek(fp,5L,1);
     fscanf(fp,"%d",d);
     fseek(fp,4L,1);
     fscanf(fp,"%d",e);
     fseek(fp,4L,1);
     fscanf(fp,"%d",f);
     fclose(fp);
    }
    

    Auserdem habe ich ihn zu einer Header-Datei gemacht namens: Lem.h 😃

    Vielen dank für deine grosse Hielfe! Ich stehe tief in deiner Schuld!

    MFG H@ckepeter

    PS.: Las dich dich doch hier Registrieren 🙂 !


Anmelden zum Antworten