Användarprofil

Uppgifter
Användarnamn
Email
Besök -
Hemsida Ingen
Plats (stad)
Senaste besök 01:00 - 1:a Januari 1970
Poster i forumet
Varningar
Grupp
Medlem sedan 01:00 - 1:a Januari 1970
Artiklar och filer
Den här användaren har inga artiklar eller filer

Avatar


Presentation av

Den här användaren har inte skapat någon personlig presentation.

Senaste inläggen i forumet

Hoppar in i felläge efter första inmatning till fil
Om jag bytar ut...
  1. infil.open("artikel_databas.txt",ios::in);

mot...
  1. ifstream infil("artikel_databas.txt",ios::in);

så funkar allting som det ska igen.
Varför kan jag inte ha infil.open och sedan infil.close efter while-loopen?

Postad 17:42 - 17:e Mars 2009
Hoppar in i felläge efter första inmatning till fil
Hejsan!
Ny medlem här. Får hoppas någon kan hjälpa mig att se vart mitt problem ligger någonstans. Hoppas det även går att utläsa vad jag vill att den del av programmet ska göra. Here goes...


Först öppnas filen artikel_databas.txt sedan kollas om den går att öppna med (!infil.good()). Självklart finns filen redan och den går vidare till nästa del.
Efter första inmatningen av ny artikel och när den har skrivit ut tecknena till filen och sedan stänger den så när man då ska lägga in en ny artikel så loopas hela processen om igen då den ska kolla ifall artikel_databas.txt finns, och det är nu på andra försöket som den går in i felläge och säger att filen inte finns. Självklart finns filen kvar men jag fattar inte varför den hoppar över numera. Den här koden funkade prima ballerina innan.


  1. #include <iostream>
  2. #include <fstream>
  3. #include <iomanip>
  4. #include <time.h>
  5. using namespace std;
  6.  
  7. void main()
  8. {
  9. int iArtNr=0, iArtikelSlumpNr=1002, iHittat=0, val=0; // Deklarationer
  10. char kArtNmn[20] = "";
  11. double dArtPris=0;
  12. ifstream infil;
  13. ofstream utfil;
  14.  
  15. cout << "+---------------------------------------------+n";
  16. cout << "| OLJEDROPPEN AB |n";
  17. cout << "+=============================================+n";
  18. cout << "| Artikelregister |n";
  19. cout << "+---------------------------------------------+n";
  20. cout << "| |n";
  21. cout << "| 1. Skapa ny artikel |n";
  22. cout << "| 0. Avsluta |n";
  23. cout << "| |n";
  24. cout << "+---------------------------------------------+n";
  25. cout << "n Vx84lj: ";
  26. cin >> val;
  27. cin.ignore();
  28.  
  29. switch(val)
  30. {
  31. case 1:
  32. {
  33. do
  34. {
  35. system("cls");
  36. iHittat=0;
  37.  
  38. srand((unsigned) time(0)); // Initiera slumptalsgeneratorn
  39. iArtikelSlumpNr = rand()%9999+1; // Slumpa ut ett artikelnummer
  40.  
  41. infil.open("artikel_databas.txt"); // -ppnar filen
  42.  
  43. if (!infil.good()) // Kollar om filen finns eller går att öppna
  44. {
  45. system("cls");
  46. cout << "Filen kan inte x94ppnas.";
  47.  
  48. rename("artikel_databas.txt", "artikel_databas.BAK.txt");
  49. utfil.open("artikel_databas.txt",ios::out);
  50. utfil.close();
  51.  
  52. cin.get();
  53. break;
  54. }
  55.  
  56. while(infil >> iArtNr >> kArtNmn >> dArtPris) // Går igenom alla artikelnummer
  57. {
  58. if(iArtNr == iArtikelSlumpNr) // Kollar om den hittar numret i "artikel_databas.txt"
  59. {
  60. iHittat=1; // Loopen avbryts och börjar om igen för att slumpa fram nytt nr
  61. infil.close(); // Stänger filen.
  62. break;
  63. }
  64. }
  65.  
  66. infil.close();
  67. if(iHittat == 1) // Användaren får mata in övrig data
  68. break;
  69.  
  70. cout << "n Ange artikelinformation nedan (0 = Avsluta)nn";
  71. cout << " Artikelnummer [" << iArtikelSlumpNr << "]n";
  72. cout << " ==================== " << endl << endl;
  73.  
  74. cout << " Artikelnamn: ";
  75. cin.getline(kArtNmn,19);
  76.  
  77. if(kArtNmn[0] == '0') // Hoppar över skrivning till fil om man avbryter med 0
  78. break;
  79.  
  80. cout << " Artikelpris: ";
  81. cin >> dArtPris;
  82.  
  83. if (dArtPris == 0) // Hoppar över skrivning till fil om man avbryter med 0
  84. break;
  85.  
  86. utfil.open("artikel_databas.txt",ios::app); // -ppnar filen
  87. // Skriver in all inmatad data till filen
  88. utfil << iArtikelSlumpNr << endl << kArtNmn << endl << dArtPris << endl;
  89. utfil.close(); // Stänger filen
  90.  
  91. } while(iHittat || !iHittat); // Upprepa hela processen tills användaren avbryter med 0
  92.  
  93. system("cls");
  94. }
  95. break;
  96.  
  97. case 0:
  98. int avsluta = 1;
  99. if(1 == avsluta)
  100. break;
  101. }
  102. }


Postad 02:37 - 17:e Mars 2009

Skicka meddelande
Läs s blog