Structure de controle

Fermé
KGThimL Messages postés 1 Date d'inscription samedi 18 novembre 2017 Statut Membre Dernière intervention 18 novembre 2017 - 18 nov. 2017 à 17:36
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 18 nov. 2017 à 22:56
Salut j'aimrais savoir comment utiliser la structure de controle GOTO.Merci d'avance pour votre particiption.
A voir également:

2 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 18 nov. 2017 à 22:57
Salut,

En C utiliser "goto" est assez simple.

Tu définis une étiquette vers laquelle tu pourras diriger le contrôle de l'exécution, et tu fais un goto dessus, qui est un saut inconditionnel.

Le plus dur, c'est de trouver des utilisations pertinentes.

Par exemple, pour sortir de deux boucles for imbriquées.

#include <stdlib.h>

int main(void)
{
    int i, j;

    /* stop when i and j equal to 5 */
    for (i = 0; i < 10; i++)
        for (j = 0; j < 10; j++)
            if (i == 5 && j == 5)
                goto out;
out:
    return 0;
}

Ou aussi, pour désigner un (ou plusieurs) point(s) de sortie d'une fonction, qui doi(ven)t être utilisé(s) pour faire le ménage avant de quitter.

#include <stdlib.h>

int main(void)
{
    char * buffer1;
    char * buffer2;
    int status = EXIT_SUCCESS;

    buffer1 = malloc(1024*1024);
    if (!buffer1)
        return EXIT_FAILURE;
    if (condition1) {
        /* do something */
        goto out_buffer1;
    }

    buffer2 = malloc(1024*1024);
    if (!buffer2) {
        status = EXIT_FAILURE;
        goto out_buffer1;
    }
    if (condition2) {
        /* do other things */
        goto out_buffer2;
    }

    /* continue doing things */
    ...
    /* wind-up */
    status = EXIT_SUCCESS;
out_buffer2:
    free(buffer2);
out_buffer1:
    free(buffer1);

    return status;
}

Dal
1
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
18 nov. 2017 à 19:14
GOTO est une instruction à éviter le plus possible, cela a tendance à créer rapidement du code spaghetti.

La plupart (quasiment à chaque fois) du temps, il y a d'autres structures qui permettes de faire plus propre.
0