ciao a tutti,

ho fatto un programma che salva delle stringhe di testo in un file.
Ho però delle domande o curiosità da porvi...

allora se devo salvare una stringa costituita da una parola solo posso anke fare così:

...

printf("scrivi qualcosa: ");

fprintf(ptr, "%s", stringa);

...

però se devo salvare uan stringa costituita da varie parole e quindi da spazi l'unico modo che ho trovato è stato questo:
( vi posto solo le funzioni interessate al salvataggio ... ):

#define MAX_IND 100

static int nbPers = 0; /* TIENE SOTTO CONTROLLO IL NUMERO DI POSIZIONI */

void controlla_stringhe(char str[],int size) { /* riceve come parametri la stringa e la dimesione */
char car;
int i = 0;


while( !isalpha(car=getchar()));

do {

str[i++] = car;

} while ( (i < size - 1 ) && ( (car = getchar()) != '\n'));


str[i] = '\0';


if (car != '\n' ) {

while (getchar() != '\n')
;
}
}


/* FUNZIONE CALCOLO MAX DATI */

Boolean controllo(Struttura pers) {

if(nbPers >= MAX_IND) {
printf("Impossibile aggiungere dati: l'indice è pieno!");
return FALSE;
}

else

{

salva[nbPers++] = pers;

return TRUE;

}
}




/* FUNZIONE PER INSERIRE LA STRINGA */

Editor inserisci_dati(Boolean controllo) {

Struttura dati; /* mi riferisco ad una struttura ... */

printf("\n\nInserisci una stringa con spazi: ");
controlla_stringhe(dati.stringa, MAX_SIZE);

return dati;

}

/* POI LI SALVO COSI' */

void salvaIndice() { /* qui salva i dati inseriti */
FILE *ptr;
int i;

if( (ptr = fopen("db.dat", "w")) == NULL)
fprintf(stderr, "ATTENZIONE!\n");
else {
for(i = 0; i < nbPers ; i++ ) {

fprintf(ptr, "%s\t",salva[i].stringa);

}
fclose(ptr);
}



}


ho modificato un pò le funzioni spero di non aver incasinato tutto e che riuscite a capire cosa fanno ... anke se non ho postato tutto il prog

cmq come si vede tutto il processo di salvataggio della stringa nel file è affidato al valore di nbPers che scorrendo l'indice man mano permette di salvare i singoli caratteri ed anke gli spazi delle stringhe...
il programma funziona perfettamente, solo che vorrei sapere se esiste un altro modo per eliminare il problema di utilizzare nbPers , magari un altro modo per sostituire :

" for(i = 0; i < nbPers ; i++ ) "

con un'altra relazione che permetta allo stesso modo di scorrere l'indice e le stringhe...