Datei öffnen mir scanf



  • Erst mal Hi,
    bevor ich jetzt umschreibe was mein Problem ist Poste ich lieber erstmal den Code:

    ...

    FILE *datei;
    char dateiname[100]

    printf("Bitte geben Sie den Namen des Datensatzes ein:\n");
    scanf("%s",dateiname);

    datei = fopen(dateiname,"r")

    ...

    Das Programm lässt sich Fehlerfrei compilieren und auch starten, nur wenn ich den Dateinamen eingegeben habe bricht das Programm ab.

    -----------------------------------------------------------------------------
    Debug Assertion Failed!

    Program: C:\users\Poschenrieder\opengl\Punkte\Debug\Punkte.exe
    File: fscanf.c
    Line: 54

    Expression: stream != NULL
    For information on how your program can cause an assertion failure, see the documentation on asserts.

    (Press Retry to debug the application)
    Abbrechen Wiederholen Ignorieren
    ----------------------------------------------------------------------------

    Ähm

    Ich habe überhaupt keine Ahnung wie ich das ändern kann. Ich würde mich sehr über hilfe freuen. Vielen dank im Voraus.
    MfG Ernd



  • schick mal bisschen mehr code



  • Ist das der ganze Code? Poste mal ein vollständiges Minimalbeispiel.



  • #include <stdio.h>
    #include <windows.h>
    #include "glut.h"
    #include <gl/gl.h>

    #pragma comment(lib, "glut32.lib")
    #pragma comment(lib, "opengl32.lib")
    #pragma comment(lib, "mui32.lib")

    void init(void);
    void display(void);

    int main(int argc,char **argv)
    {
    /* Abfrage nach Namen des Datensatz */
    FILE *datei;
    char dateiname[62];
    printf("Bitte geben Sie den Namen des Datensatzes ein:\n");
    scanf("%s",&dateiname);

    /* Öffnen der Datei */

    if((datei = fopen(dateiname,"r")) = NULL)
    {
    printf("Fehler beim öffnen der Datei %d!\n",dateiname);
    return 0;
    }

    /* Daten in Programm laden */

    short hoehe;
    short breite;

    fscanf(datei,"%d",&hoehe); //Aus Datei lesen wieviele Y-werte
    fscanf(datei,"%d",&breite); //Aus Datei lesen wieviele X-werte

    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(600,600);
    glutInitWindowPosition(50,50);
    glutCreateWindow("dB Darstellung");
    init();
    glutDisplayFunc(display);
    glutMainLoop();
    fclose(datei);
    return 0;
    }

    void init(void)
    {
    glClearColor(1.0, 1.0, 1.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-150, 150, -150, 150, -150, 150);
    }

    void display(void)
    {
    glClear(GL_COLOR_BUFFER_BIT);

    glColor3ub(0, 0, 0);
    /* Koordinaten System /
    /
    --------------------*/

    /* Y-Achse */
    glBegin(GL_LINES);
    glVertex2i(-145, 140);
    glVertex2i(-145, -140);
    glEnd();

    /* X-Achse */
    glBegin(GL_LINES);
    glVertex2i(-140, -145);
    glVertex2i(140, -145);
    glEnd();

    /* Spitzen des Koordinaten Systems*/

    /* Oben, Y-Achse */
    glBegin(GL_TRIANGLES);
    glVertex2f(-145,145);
    glVertex2f(-144,138);
    glVertex2f(-146,138);
    glEnd();

    /* Unten, Y-Achse*/
    glBegin(GL_TRIANGLES);
    glVertex2f(-145,-145);
    glVertex2f(-144,-138);
    glVertex2f(-146,-138);
    glEnd();

    /* Links, X-Achse*/
    glBegin(GL_TRIANGLES);
    glVertex2f(-145,-145);
    glVertex2f(-138,-144);
    glVertex2f(-138,-146);
    glEnd();

    /* Rechts, X-Achse*/
    glBegin(GL_TRIANGLES);
    glVertex2f(145,-145);
    glVertex2f(138,-144);
    glVertex2f(138,-146);
    glEnd();

    /* NullMarkierungen */

    glBegin(GL_LINES);
    glVertex2f(0,-143);
    glVertex2f(0, -147);
    glEnd();

    glBegin(GL_LINES);
    glVertex2f(-143, 0);
    glVertex2f(-147, 0);
    glEnd();

    /* Punkte zeichnen */

    glEnd();

    glutSwapBuffers();

    }
    Hier ist der ganze Code.



  • ohne den code länger zu betrachten:

    scanf("%s",**&**dateiname); ist in jedem Fall falsch!



  • Das Programm funktioniert auch wenn ich die fopen funktion mit einen "echten" dateinamen schreibe. Nur ich will ja in meinen Programm Den Dateinamen abfragen damit ich beliebige dateien öffnen kann.



  • Ich habe es auch schon ohne & probiert da ging es aber genauso wenig.
    Ist aber schon wieder richtig.



  • da müsste man schon einige Deklarationen der opengl lib kennen



  • fopen(dateiname,"r")) = NULL) geth nicht /* == or != */


Anmelden zum Antworten