|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2005
Città: Roma
Messaggi: 761
|
[C++] Problema apertura in scrittura di files....
Ciao,
vado subito al sodo sperando nella vostra collaborazione. Ho necessità di aprire in scrittura 5 file : file1, file2, file3, file4, file5 Vorrei fare questa operazione in un ciclo for. Ad esempio: FILE *prova // puntatore al file che sto utilizzando for (int i=0 ; i<5 ; i++) { prova=fopen(" file[i]", "w") // Scrivendo così il valore della i non viene modificato (come è giusto che sia ![]() //eventuali altre istruzioni . . .. } Vi chiedo.... Qual'è il modo + semplice per fare questa cosa? Ho pensato di fare un array di stringhe così: string vettore [5]={"file1", "file2", "file3", "file4", "file5"} for (int i=0 ; i<5 ; i++) { prova=fopen(vettore[i], "w") //eventuali altre istruzioni } Ma neanche così funge. Ho provato con l'array di caratteri ma mi è sembrato solo di complicare le cose. ![]() Mi suggerite qualcosa please???? Aspetto fiducioso!! Ciao, buona serata ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
__________________
"...e la fine di tutto il nostro esplorare sarà arrivare dove abbiamo cominciato e conoscere quel luogo per la prima volta..."" Ultima modifica di LarsFrederiksen : 20-02-2007 alle 22:17. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Non so cosa stai facendo, ma ad occhio devi usare un puntatore diverso per ogni file.
Ergo assegni al puntatore prova vari file Dovresti ad esempiop avere un array del tipo FILE* prova[5] e chiamare con prova[i]=fopen (...)
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Per quanto riguarda i nomi dei file, hai sostanzialmente 2 possibilità: creare un array dei nomi oppure generare dinamicamente il nome del file (questo va bene se i nomi sono in un formato ben preciso, ad esempio del tipo nomenumero). Modo1: Codice:
char *nomi[5] = { "file1", "file2", "file3", "file4", "file5" }; FILE *file[5]; int i; for (i = 0; i < 5; i++) file[i] = fopen (nomi[i], "w"); Codice:
FILE *file[5]; int i; char nome[20]; for (i = 0; i < 5; i++) { sprintf (nome, "file%d", i+1); file[i] = fopen (nome, "w"); } ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jun 2005
Città: Roma
Messaggi: 761
|
GRAZIE!!!!
Ciao,
intanto grazie mille per l'aiuto!! ![]() ![]() ![]() ![]() Ho provato il modo 1 e funziona perfettamente. Io sui file devo lavorarci non contemporaneamente ma uno alla volta; ho quindi utilizato un solo FILE * ed alla fine di ogni ciclo scrivo : fclose(file); file=NULL; Non so se sia necessario far ciò però per scrupolo...... ![]() Giusto per capire bene....... ma l'array nomi: char *nomi[5] = { "file1", "file2", "file3", "file4", "file5" }; è un array di 5 elementi . Ciascun elemento punta ad un char?? ![]() Non mi è molto chiara la logica della scrittura ![]() ![]() Ciao, torno a smanettare..... ![]()
__________________
"...e la fine di tutto il nostro esplorare sarà arrivare dove abbiamo cominciato e conoscere quel luogo per la prima volta..."" |
![]() |
![]() |
![]() |
#5 | ||
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
Ogni elemento dell'array è un puntatore a char che punta ad una stringa "literal".
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jun 2005
Città: Roma
Messaggi: 761
|
I tuoi consigli mi sono stati molto utili.
A presto(i dubbi non finiscono mai!! ![]() ![]()
__________________
"...e la fine di tutto il nostro esplorare sarà arrivare dove abbiamo cominciato e conoscere quel luogo per la prima volta..."" |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:33.