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: 54Expression: 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-werteglutInit(&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 != */