View Full Version : [C] Uscire da if
ciao a tutti...voglio fare un programma che mi stampi determinate frasi su un txt e sto quindi facendo delle prove, funziona tutto correttamente, ma il programma continua all'infinito, vorrei invece che digitando la parola "fine" il programma termini, come posso fare?
#include <stdio.h>
int main()
{
char tm[10];
char fine;
char rng[20];
printf("\nDigita una parola: ");
scanf("%s", &tm);
printf("\nHai scelto la parola: %s\n", tm);
printf("\nDigita una parola: ");
scanf("%s", &rng);
printf("\nHai scelto la parola: %s\n", rng);
FILE *fp;
fp = fopen("parola.txt", "a+");
fprintf(fp, "la prima parola immessa è: %s\n la seconda parola immessa è: %s ", rng, tm);
fclose(fp);
if(rng!=fine)
{
inizio:
printf("\nDigita una parola oppure 'fine' per finire: ");
scanf("%s", &rng);
printf("\nHai scelto la parola: %s\n", rng);
FILE *fp;
fp = fopen("parola.txt", "a+");
fprintf(fp, "la prima parola immessa è: %s\n la seconda parola immessa è: %s ", rng, tm);
fclose(fp);
}
goto inizio;
}
http://www.dailyblogtips.com/wp-content/uploads/codinghorror.gif
Per favore togli quel goto, il goto è una bestemmia per la programmazione ;)
ripensa al tuo programma, stavolta però non usare goto!
Aggiungo anche...indenta bene il codice, magari capirai l'errore ;)
ok censuro il goto :D ...ma ho cominciato da poco, potreste darmi delle informazioni un pò più precise?
Hai indentato il codice ? Il goto torna indiscriminatamente ad inizio sempre e comunque. L'errore è lì. Quindi inizio lo devi mettere prima dell'if.
Per risolvere senza il goto bastava un while.
Inoltre rng != fine non compara assolutamente le due stringhe. Per confrontare due stringhe in C si usa la funzione strcmp, se ritorna 0 allora le stringhe sono uguali.
khelidan1980
06-04-2008, 09:41
ok censuro il goto :D ...ma ho cominciato da poco, potreste darmi delle informazioni un pò più precise?
mi piacerebbe sapere chi ti ha insegnato,o su che libro hai letto dell'istruzione goto,su un libro introduttivo alla programmazione non dovrebbe nemmeno essere menzionata(e forse mai),comunque come ti hanno detto,devi riscrivere il programma utilizzando un ciclo while,pensaci
Perfetto ho risolto conwhile(strcmp(rng, "fine")).
cionci:
"Hai indentato il codice?"
Ma "tecnicamente" cosa significa "indentare" il codice?
khelidan1980:
mi piacerebbe sapere chi ti ha insegnato,o su che libro hai letto dell'istruzione goto,su un libro introduttivo alla programmazione non dovrebbe nemmeno essere menzionata(e forse mai),comunque come ti hanno detto,devi riscrivere il programma utilizzando un ciclo while, pensaci
L'istruzione goto l'ho usata pochi giorni fa a scuola quindi è colpa del mio professore :D
khelidan1980
06-04-2008, 14:17
L'istruzione goto l'ho usata pochi giorni fa a scuola quindi è colpa del mio professore :D
Non ho parole..... :D
L'istruzione goto l'ho usata pochi giorni fa a scuola quindi è colpa del mio professore :D
Scordatela, mi raccomando ;)
Piervincenzo
07-04-2008, 07:57
L'indentazione è una tecnica di scrittura del codice che permette maggiore leggibilità. L'idea di base è utilizzare gli spazi bianchi che chiaramente non sono interpretati o parsati dal compilatore al fine di separare le istruzioni contenute nel programma sorgente. La regola base è la off-side rule ovvero l'anteposizione di una certa quantità di spazi bianchi (spazi o tabulazioni), proporzionale al numero di strutture di controllo o blocchi, prima della funzione presa in esame.
ES.
for (i = 0; i < j; i++) {
if (a > b)
b = 200;
else
a = 200;
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.