Oppure

Loading
27/04/14 10:49
Marte111
Salve, vorrei sapere per far uscire in un ciclo di inserimento senza che ogni volta faccio ripetere :

input:> hai finito premi "S" per si , premi "N" per no.

e vorrei in modo che uno digita input:> Exit
ed esco .

ora il programma non ho ancora scritto ma se mi date un consiglio come fare lo scrivo.

uso sistema: Windows 7 a 64bit.
compilatore: TDM-GCC-32
e mi son fatto un Winux che compilo tutto da linea di comando e uso notepad++ per scrivere il codice,

e mi torna benissimo.

vi ringrazio molto.
aaa
27/04/14 11:17
Marte111
esempio in questo codice che ho scritto tramite il libro di un corso online su un sito di un professore..

#include <stdio.h>
int main()
{
char nome[256], cognome[256], tel[256];
char finito;
char nomefile[]="rubrica.txt";
FILE *Fp1;
// Apro il file in modalita' append testo
Fp1 = fopen(nomefile, "a");
if (Fp1==NULL){
printf("File %s not found\n", nomefile);
}
printf("Il puntatore (*Fp) al fil e %s e' %d\n\n", nomefile, Fp1);
// Salvo nel file i dati delle persone
finito='n';
while((finito=='n') || (finito=='N'))
{
printf("Inserire Nome: "); scanf("%s", nome);
printf("Inserire Cognome: "); scanf("%s", cognome);
printf("Inserire TEL:  "); scanf("%s", tel);
fprintf(Fp1, "%s\t%s\t%s\n", nome, cognome, tel);
fflush(stdin);
printf("Finito? S(i) oppure N(o) --> ");
scanf("%c", &finito);
}
close(Fp1);
Fp1 = fopen(nomefile, "r");
if(Fp1==NULL)
	{
		printf("File %s not found \n", nomefile);
		
	}
   printf("\n\n\n Rubrica: \n");
   while(fscanf(Fp1, "%s\t%s\t%s\n", nome, cognome, tel)== 3)
   {
     printf("%s %s, %s \n ", nome,cognome,tel);
   }
 }


come faccio ad fare quello che vorrei io , invece di premere "S" o "N".?
aaa
29/04/14 6:43
torn24
Ciao , se vuoi terminare il ciclo digitando "exit" , prima dovrai acquisire una stringa e non un carattere , poi confrontare la stringa tramite la funzione strcmp()




while(strcmp(stringa,"exit")!=0)
{
    printf("Inserire Nome: "); scanf("%s", nome);
    printf("Inserire Cognome: "); scanf("%s", cognome);
    printf("Inserire TEL:  "); scanf("%s", tel);
    fprintf(Fp1, "%s\t%s\t%s\n", nome, cognome, tel);
    fflush(stdin);
    printf("digitare "exit" per terminare altro carattere per continuare   --> ");
    scanf("%s", stringa);
}

 
 a mio avviso è più conveniente  cosi'  , basta premere invio per continuare , più rapido :)

while((finito!='n') && (finito!='N'))
{
    printf("Inserire Nome: "); scanf("%s", nome);
    printf("Inserire Cognome: "); scanf("%s", cognome);
    printf("Inserire TEL:  "); scanf("%s", tel);
    fprintf(Fp1, "%s\t%s\t%s\n", nome, cognome, tel);
    fflush(stdin);
    printf("Finito? S(i) oppure N(o) --> ");
    
    finito=getchar();
}

aaa