
Originariamente inviata da
oregon
Per la prima questione, devi azzerare r1 e r2 prima di usarle.
Per la seconda domanda, ovviamente si può fare ma non capisco quale difficoltà hai a farlo.
Grazie mille per l'interessamento
Per il primo quesito:
Wow... ahahah non credevo fosse questo tutto il problema!
.
In effetti se non inizializzo a 0 r1 ed r2 lui può avere valori di r1 ed r2 già molto alti in memoria e giustamente dopo sfora le dimensioni massime, credo sia stato questo il misfatto.
Ora funziona alla grande anche se visualizzo un errore strano nel log di compilazione che ,pero' ,non ha grande importanza perché compila ed esegue comunque alla grande.
L'errore e' il seguente: http://i68.tinypic.com/32zommb.png
Giusto per curiosita' , perchè da questo errore? E si potrebbe risolvere?
Per il secondo quesito:
Ok ora sono riuscito a fare anche questo.
Per farlo ho fatto così:
Main:
codice:
#include <iostream>
#include "StarWars.h"
using namespace std;
int main(int argc, char** argv) {
//Parte Dichiarativa
stringa s1,s2;
int r1=0,r2=0;
//Parte Esecutiva
LeggiFile(s1,r1);
cout<<"Contenuto latoscuro:\n";
StampaStringa(s1,r1);
LeggiFile(s2,r2);
cout<<"Contenuto latochiaro:\n";
StampaStringa(s2,r2);
return 0;
}
Body:
codice:
#include <string.h>
#include <fstream>
#define N 100
typedef char vettore[256];
typedef vettore stringa[N];
void LeggiFile(stringa,int&);
void StampaStringa(stringa,int);
Prototipo:
codice:
#include <iostream>
#include "StarWars.h"
using namespace std;
void LeggiFile(stringa s,int& r){
vettore FileName;
fstream f;
cout<<"Inserire il nome del file da aprire\n";
cin>>FileName;
f.open(FileName,ios::in);
if (!f)
cout<<"Permission Denied\n";
else
while(!f.eof())
f>>s[r++];
f.close();
}
void StampaStringa(stringa s,int r){
for(int i=0;i<r;i++)
cout<<s[i]<<endl;
cout<<endl;
}
E funziona benissimo.
Piccola Curiosità... quando nell'esecuzione digito il nome ovviamente funziona solo se gli specifico l'estensione alla fine, tipo : "latoscuro.txt" , se scrivo solo "latoscuro" non se lo prende.
Allora ho provato a modificare solo
codice:
f.open(FileName,ios::in);
in
codice:
f.open("FileName.txt",ios::in);
ma così non funziona mai, qualsiasi nome gli metto mi dice sempre "Permission Denied"
... quindi se volessi scrivere il nome del file a meno dell'estensione ci sarebbe qualche trucchetto da usare?
P.S.: E' solo una curiosità , anche inserendo l'estensione con l'algoritmo che ho usato sopra va piu' che bene