//litet samelsurium av telefonnummer/resultat och så
//men funkar nog som exempel ändå
//OBS! FILEN elever.txt måste finnas i programmetskatalog !!!
//läs kommentarerna i koden samt infor längst ned !!
//**********SSN**************
#include <iostream>
#include <stdlib.h>
#include <string>
#include <fstream>
#include <conio.h> //för getch();
using namespace std;
int counter=0; //global variabel används av flera funktioner
struct elev{ //egen definierad datatyp
string namn;
string resultat; //eg.telefonnummer
};
/* START *********************************************/
int main()
{
elev klasslista [50]; //array med plats för 50 objekt av typen elev
int counter=0; //antal objekt som finns i arrayen klasslista
string temp; //används av första inläsningem
ifstream inFil; //objektet infil=>som cin men källa kan styras
inFil.open("elever.txt"); //Styr vilken fil (källa) som skall läsas in
// Filen elever.txt läses till klasslista[]
if(inFil.fail()) //Felhantering – om filen ej kan öppnas
{
cerr<<"Filen kunde ej \x94ppnas - Avslutar!";
getch();
exit(1);
}
//FÖRSTA INLÄSNINGEN SKER UTANFÖR LOOPEN - OM DEN ÄR OK STARTAR LOOPEN
getline(inFil,temp); //läser från filen elever.txt till en temporär string
if(inFil.eof()) //om elever.txt är tom EndOfFile in i.s.f avbryt
cout<<"FILEN \x8eR TOM!"<<endl;
else // om elever.txt inte är tom läs in innehållet till klasslista
{
for(int i=0; !inFil.eof()&&!inFil.fail() ;i++) //kolla längst ned i filen
{
klasslista[i].namn=temp; //klasslista plats [i] får värdet av temp
getline(inFil,klasslista[i].resultat); //nästa rad i filen läses till resultat
counter++; //antalet objekt i klasslista ökas med 1
getline(inFil,temp);
}
} // innehållet i elever.txt är nu inläst till
inFil.close(); //arrayen klasslista vi stänger infil
// INLÄSNING TILL ARRAY KLAR /*/*/
// så då skriver vi ut det som finns i listan
for(int i=0;i<counter;i++)
{
cout<<klasslista[i].namn<<endl;
cout<<klasslista[i].resultat<<endl;
}
cout<<endl<<endl<<endl;
// vi kan nu lägga till nya objekt
cout<<endl<<"L\x84gg till ytterligare poster i telefonlistan avsluta med # f\x94r namn"<<endl;
cout<<"Tryck f\x94rst enter";
getch(); //väntar på knapptryckning
system("CLS"); //rensar skärmen
string tempnamn;
cout<<"ange namn (# f\x94r att avsluta): ";
getline(cin,tempnamn);
for(int i=counter; tempnamn!="#"; i++)
{
klasslista[i].namn=tempnamn;
cout<<"ange telenummer: ";
getline(cin,klasslista[i].resultat);
system("CLS");
cout<<"ange namn(# f\x94r att avsluta): ";
getline(cin,tempnamn);
counter++;
}
//PROGRAMAVSLUTNING Skriver innehållet i arrayen klasslista till filen elever.txt
ofstream tillFil;
tillFil.open("elever.txt");
for(int i=0; i<counter; i++) //counter vet hur många objekt klasslista innehåller
{
tillFil<<klasslista[i].namn<<endl;
tillFil<<klasslista[i].resultat<<endl;
}
//klart stäng tillfil
tillFil.close();
cout<<"NU VARE KLART"<<endl;
getch();
return 0;
} //END of PROGRAM.
/********************************************************************************
C++ provides a special function, eof( ),
that returns nonzero (meaning TRUE) when there are no more data to be read
from an input file stream, and zero (meaning FALSE) otherwise.
The fail() function.
It returns a nonzero value if any I/O error (not end of file) has occurred.
***********************************************************************************/