24. juni 2004 - 21:14
Der er
16 kommentarer og 1 løsning
fread = programmet har udført en ulovlig handlign og lukkes
det der kode failer FILE *fil; if( (fil = fopen("test.txt", "R") ) != NULL) { return 0; } char kagemanden[30] = ""; fread(&kagemanden, sizeof(kagemanden), 1, fil); fclose(fil); test.txt er der, og der masser af indhold i den... compiler det i dev-cpp uden problemer HVAD GØR JEG GALT ?¿ //madman
Annonceindlæg fra Infor
Prøv: fread(&kagemanden, sizeof(kagemanden), 1, fil); -> fread(kagemanden, sizeof(kagemanden), 1, fil); altså uden & foran kagemanden.
Man plejer iøvrigt at bruge "r" ikke "R"
hvad er forskellen på lille og stort r
og uden & der kommer den også med fejlen
int main(int argc, char *argv[]) { FILE *fil; if( (fil = fopen("test.txt", "r") ) != NULL) { cout << "fail" << "\r\n"; system("PAUSE"); return 0; } char kagemanden[30] = ""; fread(kagemanden, sizeof(kagemanden), 1, fil); cout << kagemanden << "\r\n"; fclose(fil); system("PAUSE"); return 0; } det der kan ikke finde filen!!!, men med stort R der kan den godt ? er det min compiler der er kaget ?
men somsagt med stort R der får jeg en windows fejl "programmet har udført en ulovlig handlign og lukkes"
fread(kagemanden, sizeof(kagemanden), 1, fil); cout << kagemanden << "\r\n"; ser ud som der mangler en terminerende nul byte. Prøv: fread(kagemanden, sizeof(kagemanden), 1, fil); kagemanden[29] = '\0'; cout << kagemanden << "\r\n";
Er du opmærksom på at fread nok er mest velegnet til binære filer, mens tekst filer med fordel kan læses med fgets ?
ja det er fordi jeg har et større program som jeg ikke kan få til og du... det er en tutorial med en BSP file loader... har fulgt den til punkt og prikke (men den er så til MSVC++)
24. juni 2004 - 21:25
#10
men fik debugget mig ned til at det ikke var fread der ville du
24. juni 2004 - 21:27
#11
int main(int argc, char *argv[]) { FILE *fil; cout << "1"; if( (fil = fopen("test.txt", "R") ) != NULL) { cout << "fail" << "\r\n"; system("PAUSE"); return 0; } cout << "2"; char kagemanden[29] = ""; cout << "3"; fread(kagemanden, sizeof(kagemanden), 1, fil); cout << "4"; kagemanden[29] = '\0'; cout << kagemanden << "\r\n"; fclose(fil); system("PAUSE"); return 0; } det der skriver "123" inden jeg får windows fejl
24. juni 2004 - 21:27
#12
Skal: if( (fil = fopen("test.txt", "r") ) != NULL) ikke være: if( (fil = fopen("test.txt", "r") ) == NULL) ?
24. juni 2004 - 21:28
#13
ahh uhada det hjalp meget =))) nu virker det
24. juni 2004 - 21:28
#14
takker svar ?
24. juni 2004 - 21:29
#15
svar
24. juni 2004 - 21:30
#16
Og husk lige tippet om fgets !
24. juni 2004 - 21:31
#17
det er utroligt så meget at et ! kan gøre ;)
Kurser inden for grundlæggende programmering