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...