Access violation writing location 0x00000000
-
Hallo!
Ich bekomme beim Ausführen meiner exe die o.g Fehlermeldung.
Sie kommt immer dann, wenn ich die erste Var. der Struktur beschreiben will.Weiß einer, woran das liegt?
struct point{ float x; float y; float z; }newPoint; main (){ ... printf("\nx: "); scanf("%f",&newPoint.x); printf("\ny: "); scanf("%f",&newPoint.y); printf("\nz: "); scanf("%f",&newPoint.z); ... }
-
Das liegt IMHO an den "...".
Also an dem Code, den du hier weggelassen hast.
-
#include <stdio.h> #include <stdlib.h> #include <string.h> struct point{ float x; float y; float z; }newPoint; int main(void){ char pfad[124]; int lengthOfString_pfad; printf("Pfad angeben: "); fgets(pfad,sizeof(pfad),stdin); /* Das Enter-Zeichen, das fgets() an des Ende des Strings mitkopiert, wird ausgeschlossen. */ lengthOfString_pfad = strlen(pfad); pfad[lengthOfString_pfad-1] = pfad[lengthOfString_pfad]; FILE *f; f = fopen(pfad,"a"); if(f == NULL){ printf("Datei kann nicht geoeffnet werden!"); return 1; }else{ printf("Datei erfollgreich geoeffnet.\n\n"); } char operation='a'; while(operation != 'q'){ printf("\n--Moegliche Operationen--\n"); printf("\nn = Einen Punkt einlesen\n"); printf("l = Alle Punkte ausgeben\n"); printf("q = Programm beenden\n"); printf("\nBitte die gewuenschte Operation eingeben: "); scanf("%c",&operation); while(getchar() != '\n'); switch(operation){ case 'n' : printf("\nx: "); scanf("%f",newPoint.x); printf("\ny: "); scanf("%f",newPoint.y); printf("\nz: "); scanf("%f",newPoint.z); break; case 'l' : printf("l"); break; case 'q' : break; /*bei 'q' soll keine Fehlermeldung ausgegeben werden*/ default : printf("Zeichen unbekannt"); } } fclose(f); system("PAUSE"); return 0; }
-
Der Fehler wird sein, dass im Programm eben kein & vor newPoint.x/y/z steht. Ein Detail, was Du in der Frage übrigens dazu- bzw. weggedichtet hast.
-
LordJaxom_lg schrieb:
Der Fehler wird sein, dass im Programm eben kein & vor newPoint.x/y/z steht. Ein Detail, was Du in der Frage übrigens dazu- bzw. weggedichtet hast.
Öhm, geht tatsächlich...
Die Version hier habe ich mit Dev++ compiliert. Als die Fehlermeldung aber kam, hab den Code ins Visual Studio reinkopiert und die Zeiger dann hinzugefügt. Da kam aber wieder die selbe Fehlermeldung.
-
Hallo nochmal!
Ich bin ein kleines Stückchen weiter im Programm und schon auf das nächste Problem gestoßen, das ich mir nicht erklären kann:
Meine Funktion "fileWrite" dient ausschließlich dazu, Punkte(float-Werte) in eine Datei zu schreiben, in dem Fall eine .txt-Datei. Das klappt auch, nur habe ich in meiner Datei zB anstatt den Zahlen "1,2,3" soetwas " €? @ @@"
Warum ist das so?
main(){ ... FILE *f; f = fopen(pfad,"a+b"); ... fileWrite(f); fclose(f); }
struct point{ float x; float y; float z; }newPoint; void fileWrite(FILE *f){ printf("\nx: "); scanf("%f",&newPoint.x); printf("\ny: "); scanf("%f",&newPoint.y); printf("\nz: "); scanf("%f",&newPoint.z); fwrite(&newPoint, sizeof(newPoint), 1, f); }
-
Mit fprintf() kannst Du das in eine Textdatei schreiben. fwrite() schreibt das
halt binär rein. Das gibt dann diese Hühnerfüße.