Avatar billede hansent Nybegynder
13. marts 2002 - 22:55 Der er 8 kommentarer og
1 løsning

read and write files

Hej allesammen,
Jeg har faaet en opgave hvor jeg skal have flettet en readfile - og en write file function ind.
Opgaven ser saaledes ud (jeg undskylder laengden):

File: student.h indeholder:
struct student

  char name[25];
  char address[80];
  int yearofbirth;
  char telno[15];
};
File student.cpp indeholder:
//variables
student  csci2912[10];
int numstudents;

Main function skal prompte brugeren for anatl students og bruge en loop til at faa, navn, addresse, foedselsaar samt telefon nummer for hver student. Brugeren kan kun tilfoeje student (navn, adresse, foedselsaar og telefon nr.)Derudover skal den indeholde en code for at bevise at write + readfile functioner fungerer.

iofunctions.cpp indeholder:
//fra file til array
void readfile(student[], int&, char[]);
// fra array til file
void writefile(student[], int, char[]);

Er der en der kan hjaelpe mig med med dette?
Mange tak!
MVH
Thomas

Avatar billede spectual Nybegynder
14. marts 2002 - 03:40 #1
dit spørgsmål er ret kludret formuleret. hvad er det du har brug for hjælp til?
Avatar billede hansent Nybegynder
14. marts 2002 - 06:34 #2
Jeg har sat opgaven op som jeg har faaet den.
Det jeg har problemer med er readfile og write functionerne. Det er om hvordan jeg faar data fra en file ind i en array (void readfile(student[], int&, char[]);)
og hvordan jeg faar data fra en array ind i en file (void writefile(student[], int, char[]);)

Haaber at det er mere fortstaaeligt.
MVH
Thomas
Avatar billede kamikaze Nybegynder
14. marts 2002 - 13:00 #3
Er det at skrive til/læse fra fil du har brug for hjælp til???
Avatar billede kamikaze Nybegynder
14. marts 2002 - 13:03 #4
Du har WriteFile(student[], int, char[]);

student[] er student-struct'en, int er antal af students, men hvad skal char[] bruges til????
Avatar billede jpk Nybegynder
14. marts 2002 - 13:48 #5
Her kan du se hvordan...

#include "stdafx.h"
#include <iostream.h>
#include <fstream.h>

typedef struct

  char name[25];
  char address[80];
  int yearofbirth;
  char telno[15];
} student;


//fra file til array
void readfile(student* StudArray, int& nStudents, char* cFileName)
{
    ifstream ifs(cFileName);
    for(int i=0; i<nStudents; ++i)
    {
        ifs >> StudArray[i].name;
        ifs >> StudArray[i].address;
        ifs >> StudArray[i].yearofbirth;
        ifs >> StudArray[i].telno;
    }
}

// fra array til file
void writefile(student* StudArray, int nStudents, char* cFileName)
{
    ofstream ofs(cFileName);
    for(int i=0; i<nStudents; ++i)
    {
        ofs << StudArray[i].name << endl;
        ofs << StudArray[i].address << endl;
        ofs << StudArray[i].yearofbirth << endl;
        ofs << StudArray[i].telno << endl;
    }
}


int main(int argc, char* argv[])
{
    //variables
    student  csci2912[10];
    int numstudents;

    cout << "Indtast antal: " << flush;
    cin >> numstudents;
    cout << "Du har valgt at indtaste " << numstudents << " studenter" << endl;

    for(int i=0; i<numstudents; ++i)
    {
        cout << "Navn: " << flush;
        cin >> csci2912[i].name;
        cout << "Adresse: " << flush;
        cin >> csci2912[i].address;
        cout << "Foedselsdag: " << flush;
        cin >> csci2912[i].yearofbirth;
        cout << "Telefonnr.: " << flush;
        cin >> csci2912[i].telno;
    }

    writefile(csci2912, numstudents, "C:\\students.txt");

    readfile(csci2912, numstudents, "C:\\students.txt");

    return 0;
}
Avatar billede hansent Nybegynder
14. marts 2002 - 18:03 #6
Hej jpk,
Mange tak for dit arbejde. Jeg vil meget gerne give dig pointene, men der er et problem.
Det er et krav at jeg benytter:
void readfile(student[], int&, char[]);
og
void writefile(student[], int, char[]);
Kan du hjaelpe med det?
Mange tak for din hjaelp, jeg saetter stor pris paa det.
Avatar billede jpk Nybegynder
15. marts 2002 - 08:50 #7
Okay, så gør således:

// Forerklæringer af funktioner
void readfile(student[], int&, char[]);
void writefile(student[], int, char[]);

int main(int argc, char* argv[])
{
    //variables
    student  csci2912[10];
    int numstudents;

    cout << "Indtast antal: " << flush;
    cin >> numstudents;
    cout << "Du har valgt at indtaste " << numstudents << " studenter" << endl;

    for(int i=0; i<numstudents; ++i)
    {
        cout << "Navn: " << flush;
        cin >> csci2912[i].name;
        cout << "Adresse: " << flush;
        cin >> csci2912[i].address;
        cout << "Foedselsdag: " << flush;
        cin >> csci2912[i].yearofbirth;
        cout << "Telefonnr.: " << flush;
        cin >> csci2912[i].telno;
    }

    cout << "Skriver " << numstudents << " studenter til fil..." << endl;
    writefile(csci2912, numstudents, "C:\\students.txt");

    readfile(csci2912, numstudents, "C:\\students.txt");
    cout << "Har laest " << numstudents << " fra fil" << endl;

    return 0;
}

//fra file til array
void readfile(student StudArray[], int& nStudents, char cFileName[])
{
    ifstream ifs(cFileName);
    nStudents=0;
    while(ifs.good())
    {
        ifs >> StudArray[nStudents].name;
        ifs >> StudArray[nStudents].address;
        ifs >> StudArray[nStudents].yearofbirth;
        ifs >> StudArray[nStudents].telno;
        ++nStudents;
    }
}

// fra array til file
void writefile(student StudArray[], int nStudents, char cFileName[])
{
    ofstream ofs(cFileName);
    for(int i=0; i<nStudents; ++i)
    {
        ofs << StudArray[i].name << endl;
        ofs << StudArray[i].address << endl;
        ofs << StudArray[i].yearofbirth << endl;
        if(i == nStudents-1)
            ofs << StudArray[i].telno; // Lav ikke linieskift hvis det er sidste linie
        else
            ofs << StudArray[i].telno << endl;
    }
}


Jeg overså lige noget ved erklæringen for writefile i første omgang, så jeg har ændret lidt på metoden...
Avatar billede hansent Nybegynder
15. marts 2002 - 10:47 #8
Hej jpk,
Du er simpelthen for sej. Mange tak for din hjaelp. Jeg tilfoejede cin.ignore i for loopen og saa koerte det bare.
Mange hilsner
Thomas
Avatar billede hansent Nybegynder
16. marts 2002 - 22:47 #9
jpk,
er der en mulighed for at jeg kan still dig et ekstra spoergsmaal. Jeg har kun programmeret i 2 1/2 maaned og denne opgave om write og readfile er vi ikke naaet til i min klasse, saa der er en del huller. Kan du fortaelle en lille smule om hvad der lige praecis sker i writefile og readfile og/eller refere til et link der kan fortaelle om det.
Tak paa forhaand!
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