PDA

Visualizza la versione completa : [C++]Passaggio array ad un procedura.


Whistler
26-05-2010, 20:01
#include <cstdlib>
#include <iostream>
#include <string.h>
#include <stdio.h>
#define N 20

using namespace std;

//const int N = 20;
//const char *path = "dati.txt";
int vt[N], i;


void load_file(int vt[]);


int main(int argc, char *argv[]) {


cout << "prova";

load_file(vt);

for (i = 0; i <= N; i++) {
cout << vt[i] << endl;
}

system("PAUSE");
return EXIT_SUCCESS;
}

void load_file(int vt[]) {
FILE* f;
string row;
int err;

f = fopen("dati.txt", "r");

i = 0;
while (!feof(f)) {
fscanf(f, "%d", vt[i]);
i++;
}

fclose(f);
}
Salve, ho un problema con questo listato (a dire la verità con gli array e i file in generale). Praticamente il compilatore (wxDev-C++) questo me lo compila, solo che quando vado ad eseguirlo, arriva fino a stampare prova e poi, al momento di richiamare la funzione, si blocca e mi esce un errore di windows (quello con inviare e non inviare).
Sapreste dirmi dov'è il problema?

shodan
26-05-2010, 20:23
Sfori l'array.
Il range ammesso è da 0 a N -1 (evidenziato dal segno minore)


for (i = 0;i < N ; i++) {
cout << vt[i] << endl;
}



(Ammesso che tu abbia solo 20 valori nel file, sennò s'inchioda prima).

oregon
26-05-2010, 20:32
Sapreste dirmi dov'è il problema?

Nelle due righe corrette di seguito

for (i = 0; i < N; i++) {

fscanf(f, "%d", &vt[i]);

google01
26-05-2010, 20:42
io cambierei anche il while come segue:



while (i < N && !feof(f)) {
...
}

Whistler
26-05-2010, 20:49
Funziona!
Il che vuol dire che il passaggio dell'array alla funzione lo facevo bene.


io cambierei anche il while come segue:


while (i < N && !feof(f)) {
...
}
In effetti come idea non è cattiva :P


Grazie per le correzioni, in questo momento vi sto stimando :D


P.S. Dato che devo fare altri 6-7 programmi in C++ coi file (oltre a completare questo), e dato che sicuramente troverò qualche altro problema, posso continuare ad usare questa discussione? Giusto per non aprirne di nuove.

oregon
26-05-2010, 20:52
Originariamente inviato da Whistler
... posso continuare ad usare questa discussione? Giusto per non aprirne di nuove.

Non credo ... a meno che i problemi non abbiano ancora a che fare con

"Passaggio array ad un procedura"

altrimenti, nuova discussione, nuovo titolo ...

Whistler
26-05-2010, 21:05
Originariamente inviato da oregon
Non credo ... a meno che i problemi non abbiano ancora a che fare con

"Passaggio array ad un procedura"

altrimenti, nuova discussione, nuovo titolo ...
E se ci cambio il titolo di volta in volta?

oregon
26-05-2010, 23:07
Originariamente inviato da Whistler
E se ci cambio il titolo di volta in volta?

:nonono:

Loading