nico402
nello switch() si è "obbligatorio" anzi anche li con degli if all'inizio di ogni case si può evitare... ma nel resto del codice è mai indispensabile. basta mettere la condizione nel ciclo
io continuo a nn essere d'accordo, o meglio: nella programmazione nn esiste mai un unico modo per scrivere un programma... quindi sicuramente il break può essere sostituito, ma è altrettanto vero ke in alcuni casi il suo utilizzo risulti + comprensibile ed adatto, ecco l'esempio all'interno di un main:
Codice:
int main (int argc, char*argv[])
{
int sd;
struct sockaddr_in server_addr;
int server_len = sizeof (server_addr);
char CH_TERM;
char CH_SEQ[64]="zvutsrqponmlihgfedcba";
char CH_ID[5];
int ID;
char conto[3];
int num_conto;
addr_initialize (&server_addr, PORT, (long) inet_addr(IP_ADDR));
sd = socket(AF_INET, SOCK_STREAM, 0);
int err = connect(sd, (struct sockaddr*) &server_addr, server_len);
if(err < 0)
{
printf("\nConnessione non riuscita\n");
return -1;
}
else
printf("\nConnessione effettuata\n");
int i = 0;
for(i= 0; i<21; i++)
{
sprintf(CH_ID, "%d\n", i);
int j = 0;
do
{
send(sd, &CH_ID[j], 1, 0);
printf("%c", CH_ID[j]);
j++;
} while(CH_ID[j-1] != '\n');
printf(" ");
FILE* fp = fopen ("term.txt", "r");
fseek (fp, i, SEEK_SET);
CH_TERM = fgetc (fp);
fclose(fp);
if (CH_TERM == 'q')
break;
j = 0;
do
{
send(sd, &CH_SEQ[j], 1, 0);
j++;
} while(CH_SEQ[j-1] != CH_TERM);
j=0;
do
{
recv(sd, &conto[j], 1, 0);
j++;
} while (conto[j-1] != '\n');
num_conto = atoi(conto);
printf("La stringa inviata e' composta da %d caratteri\n", num_conto);
}
close(sd);
}
guardate il break in grassetto... sarà ke sono un novellino in programmazione, ma secondo me il suo utilizzo è migliore e + lineare rispetto ad altre soluzioni...