I see stud
You did the pathname & filename arrays much more clever than I That way the program updates 2 arrays instead of creating 2arrays/file
Well, the code is still not working O_o I have no idea why :| I still get the same "variable-sized object 'pagefiles' may not be initialized"
and build error 1.
The class I have looks as follows:
tiedosto.h
Code:
#ifndef _TIEDOSTO_H
#define _TIEDOSTO_H
class tiedosto
{
private:
public:
tiedosto(char nim[], char pol[]); //luo uuden olion (constructor)
tiedosto(){ ; }
~tiedosto(); //destruktori (destructor)
int polunmitta; //path lenght
int nimenmitta; //name lenght
int kokomitta; //path+name lenght
char nimi[50]; //name (of the file)
char polku[100]; //name of the path
char kokonimi[151]; //path+name
FILE *ylikirjoita, *lisaa, *lue, *valiaikainen; //filestreams
int Alusta(); //alustaa (luo uuden tyhjan tiedoston palauttaa 1 jos onnistuu, 0 jos ei)
// formats a file returns 1 if success, 0 if not.
int korvaa(char korvattava_teksti[],char korvaava_teksti[]);//palauttaa korvattujen lkmn, -1 jos epaonnistui.
//replaces a certain occurrance (korvattava_teksti[]) from the file with korvaava_teksti[]
//returns amount of replaced words, -1 if fails.
int lisaa_alkuun(char lisayskohta[],char lisattava[]); //palauttaa lis lkm:n, -1 jos epaonn
int lisaa_loppuun(char lisayskohta[], char lisattava[]); //palauttaa lis lkm:n, -1 jos epaonn
int kopioi(tiedosto lahde);
int tarkista_lue();// palauttaa 0 jos kiinni, 1 jos auki
int tarkista_lisaa();// palauttaa 0 jos kiinni, 1 jos auki
int tarkista_ylikirjoita();// palauttaa 0 jos kiinni, 1 jos auki
int tarkista_valiaikainen();// palauttaa 0 jos kiinni, 1 jos auki
int close_all(); //palauttaa 1 jos onnistuu, -1 jos ei
int avaa(char moodi); //l,k,y moodit (lue,kirjoita,ylikirjoita) palauttaa 1 (onnistui), -1(ei)
int avaa(int n); // valiaikainen auki, 1=w,2=r,3=a palauttaa 1 (onnistui), -1(ei)
int sulje(char moodi); //(l)ue,(k)irjoita,(y)likirj,(v)aliaik. 1 onnistui, -1 epaonn.
/*kopioi kunnes lahdetiedostosta loytyy*/
int lisaa_loppuun(tiedosto lahde, char paatekohta[]); //kopioi matchin loppuun: 1 onnist, -1 epaonn
int lisaa_alkuun(tiedosto lahde, char paatekohta[]); //kopioi matchin alkuun: 1 onnist, -1 epaonn
int lisaa_alkuun(tiedosto lahde); //palautta 1 jos onnistuu, -1 jos ei.
int lisaa_loppuun(tiedosto lahde);
/*kopioi kunnes lahdetiedostosta alkaa*/
//int kopioi_alkaen_l(tiedosto lahde, char alkukohta[]); //kopioi matchin loppusta: 1 onnist, -1 epaonn
//int kopioi_alkaen_a(tiedosto lahde, char alkukohta[]); //kopioi matchin alusta: 1 onnist, -1 epaonn
/*kopioi paikkaan kohdetiedostossa*/
//int kopioi_kohteeseen_l(tiedosto lahde, char alkukohta[]);
//int kopioi_kohteeseen_a(tiedosto lahde, char alkukohta[]);
};
#endif
The functions of the class are defined in tiedosto.cpp I won't paste it here, unless absolutely necessary, since it is
1. Long(ish)
2. badly written (Hey, I do not like people laughing at me)
main now looks like :
Code:
#include <iostream>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include "tiedosto.h"
using namespace::std;
main(){
char pagenames[250]; //arrays for filenames
char paths[250]; //arrays for paths
tiedosto* pagefiles[250];
int i=0,number_of_pages=0,lkm=0;
FILE *readindex; // stream to read pagenames and paths from indexfile
readindex=fopen("kotisivindex.txt","r");
while(feof(readindex)==0){
fgets(paths,250,readindex); //stores paths in arrays
fgets(pagenames,250,readindex); //stores filenames in arrays
number_of_pages++;
tiedosto pagefiles[number_of_pages] = new tiedosto(pagenames,paths); /*creates new object.
constructor is "tiedosto(char filename[],char path[]); So pagenames and paths should be given
as char arrays.*/
}
.
.
.
}
The creation of new object seems to be the problem. I just fail to see what's so differen't from stud's example? O_o