Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

13.06.2011, 00:05

fread Problem in C::B

Hey leutz
Kurz zur Info: Ich benutze C::B mit mingw. Wenn ich diesen Ausdruk schreibe funktioniert alles super:
Wenn ich dies schreibe funktioniert alles super:


C-/C++-Quelltext

1
fread(buffer,1,2,pFile);


Aber sobald ich den 3 Parameter vom Typ size_t nicht direkt sonder mit einer Variable übergebe kommt ein Fehler in der Konsole.


C-/C++-Quelltext

1
2
size_t len = 2;
fread(buffer,1,len,pFile);



Der lautet:


Quellcode

1
This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.  Process returned 3 (0x3)   execution time : 1.606 s Press any key to continue.


Ich habe schon alle möglichen Typen ausprobiert anstatt size_t, aber er stürtzt immer wieder ab.
Weiß jmd eine Antwort?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

13.06.2011, 00:10

Das Problem liegt hier nicht an dem gezeigten Code. Zeig ein komplettes Beispiel, wo du den Fehler bekommst. Du hast hier irgendwie undefiniertes Verhalten erzeugt und somit können kleine, unabhängige Änderungen den Fehler an/ausschalten.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

13.06.2011, 10:09

Mich würde speziell interessieren wie pFile deklariert und initialisiert wurde.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

13.06.2011, 10:10

Oder was eigentlich der Debugger dazu sagt...

5

13.06.2011, 20:25

Hier mein Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;

int main () {
    FILE * pFile;
    pFile = fopen ("myfile.txt","rb");
    if (pFile!=NULL) {
        size_t len = 2;
        char* buffer;
        fread(buffer,1,len,pFile);
        cout << (string)buffer << endl;
    }
  return 0;
}

Vielen Dank für alle Antworten :thumbsup:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »AntiSpeed« (13.06.2011, 21:00)


drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

14.06.2011, 18:28

hey
Hab das jetzt mal den Memory freigehalten mit malloc. Leider wird ein Zeichen zu viel ausgelesen aus ieinem Grund:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;

int main () {
FILE * pFile;
pFile = fopen ("myfile.txt","rb");
if (pFile!=NULL) {
    long len = 2;
    char* buffer = (char*) malloc (sizeof(char)*len);
    fread(buffer,1,len,pFile);
cout << (string)buffer << endl;
}
  return 0;
}

Wäre sehr erfreut über eine Antwort

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

14.06.2011, 18:33

Nein, es wird nichts zu viel ausgelesen. Du benutzt einfach char* und cout nicht korrekt.
Spricht eigentlich etwas dagegen nicht vielleicht doch lieber ifstream und string zu nutzen statt FILE und char*?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (14.06.2011, 18:54)


9

14.06.2011, 19:04

Ja und zwar, dass ich Hexadezimal abspeichern möchte und auslesen möchte und das funtkioniert nur mit den c-funktionen oder etwa nicht?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

14.06.2011, 19:11

Nein, natürlich nicht. Das geht mit den C++ Varianten genauso. Wobei ich mich frage, was bei Dir "hexadezimal speichern" bedeutet. Redest Du von binären Dateien oder wirklich von hexadezimal-formatierten Werten/Strings? Beides geht mit den C++ Varianten und beides deutlich schöner und vor allem mit weniger Fehlern als das, was Du da bisher hast. Wobei ich glaube, dass Dir noch viele Grundlagen fehlen, wenn ich die Fehler so betrachte...
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige