Avatar billede mad_man Nybegynder
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
Avatar billede arne_v Ekspert
24. juni 2004 - 21:16 #1
Prøv:

fread(&kagemanden, sizeof(kagemanden), 1, fil);

->

fread(kagemanden, sizeof(kagemanden), 1, fil);

altså uden & foran kagemanden.
Avatar billede arne_v Ekspert
24. juni 2004 - 21:16 #2
Man plejer iøvrigt at bruge "r" ikke "R"
Avatar billede mad_man Nybegynder
24. juni 2004 - 21:17 #3
hvad er forskellen på lille og stort r
Avatar billede mad_man Nybegynder
24. juni 2004 - 21:17 #4
og uden & der kommer den også med fejlen
Avatar billede mad_man Nybegynder
24. juni 2004 - 21:20 #5
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 ?
Avatar billede mad_man Nybegynder
24. juni 2004 - 21:21 #6
men somsagt med stort R der får jeg en windows fejl "programmet har udført en ulovlig handlign og lukkes"
Avatar billede arne_v Ekspert
24. juni 2004 - 21:22 #7
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";
Avatar billede arne_v Ekspert
24. juni 2004 - 21:22 #8
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 ?
Avatar billede mad_man Nybegynder
24. juni 2004 - 21:24 #9
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++)
Avatar billede mad_man Nybegynder
24. juni 2004 - 21:25 #10
men fik debugget mig ned til at det ikke var fread der ville du
Avatar billede mad_man Nybegynder
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
Avatar billede arne_v Ekspert
24. juni 2004 - 21:27 #12
Skal:

if( (fil = fopen("test.txt", "r") ) != NULL)

ikke være:

if( (fil = fopen("test.txt", "r") ) == NULL)

?
Avatar billede mad_man Nybegynder
24. juni 2004 - 21:28 #13
ahh uhada det hjalp meget =))) nu virker det
Avatar billede mad_man Nybegynder
24. juni 2004 - 21:28 #14
takker svar ?
Avatar billede arne_v Ekspert
24. juni 2004 - 21:29 #15
svar
Avatar billede arne_v Ekspert
24. juni 2004 - 21:30 #16
Og husk lige tippet om fgets !
Avatar billede mad_man Nybegynder
24. juni 2004 - 21:31 #17
det er utroligt så meget at et ! kan gøre ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester