CodBlocks sous linux - Programme s'arrete

Fermé
Smily - 17 avril 2013 à 17:26
Smily91 Messages postés 3 Date d'inscription mercredi 17 avril 2013 Statut Membre Dernière intervention 19 avril 2013 - 19 avril 2013 à 23:15
Bonjour,

J'ai un programme à créer en C pour mes cours sous CodeBlocks. C'est un logiciel que je connais, il n'y a pas de soucis.

J'ai codé le tout sur mon pc sur windows, tout fonctionne parfaitement, seulement je dois le passer sous linux, le système d'exploitation des pc de mon école.

En testant cet apres-midi sur un des postes, le programme ce lance bien, mais "s'arrete" en plein milieu! Pourtant, il ne s'achève pas, le programme n'est pas terminer mais il s'arrete.
On a la possibilité de taper des choses mais il n'y a aucun scan et ca ne fait rien du tout!

J'ai essayer de trouver d'où provient le problème mais impossible: en printant un peu partout pour voir où il bloquait, il s'avère que le programme ne s'arrete pas pour ce qui le précède! J'ai supprimé la boucle while mais le programme s'arrete quand meme!

Je n'arrive pas à comprendre, est-ce un problème de mémoire? Pour se "bloquer" sans signaler d'erreur, ni de fin du programme?

Merci de vos réponses
A voir également:

5 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
17 avril 2013 à 19:14
Avoir le code aiderait fortement. (a mettre _imprerativement_ dans des balises <code ></code>)
0
Smily91 Messages postés 3 Date d'inscription mercredi 17 avril 2013 Statut Membre Dernière intervention 19 avril 2013
17 avril 2013 à 19:33
Voila le code! C'est un menu, je vous ai mis la 4e option, cette d'ajouter une grille d'horaires à un arret!

if(choix==4)
        {
            Nom ligne;
            Temps table[10];

            printf("La ligne %s contient %d arrets.\n", ligne, r[resactu].res[i].nbrarrets);
            printf("Rentrez les heures des arrets successivement : \n");

            int j=0;
            while(j<r[resactu].res[i].nbrarrets)
            {
                printf("Entrez un horaire pour l'arret %s : \n", r[resactu].res[i].parcours[j].nom);
                printf("\nHeure : ");
                table[j].heure=lireEntier();
                printf("\nMinutes : ");
                table[j].minutes=lireEntier();
                j=j+1;
/*si on print le j ici, toutes les valeurs y sont!*/
            }

/*si on print qlq chose ici, il l'apparait pas!,c'est ici que le programme "bloque"*/

        if(ajouteHoraire(&r[resactu], ligne, table))
        {
            printf("Les horaires ont bien été ajoutés\n");
        }
            printf("\nRetour au menu principal....\n");
            system("pause");

        }
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
17 avril 2013 à 19:50
Que contient ta fonction lireEntier()? (Le scanf est connu pour causer quelques problèmes si l'on y rentre pas des données correctes)
0
Smily91 Messages postés 3 Date d'inscription mercredi 17 avril 2013 Statut Membre Dernière intervention 19 avril 2013
17 avril 2013 à 20:01
int lireEntier () {
  int entierLu;
  int nbEntiersLus;
  char videTampon;

  do {
    nbEntiersLus = scanf( "%d",&entierLu);
    if (nbEntiersLus != 1) {
      printf ("Saisie incorrecte. Recommencez : \n");
    }
    /* vidage du reste de la ligne (si plusieurs entiers ou autres acracteres */
    do {
      scanf ("%c",&videTampon);
    } while (videTampon != '\n');
  } while (nbEntiersLus != 1);
  return (entierLu);
}


Mais je pense avoir trouvé le probleme...
Je dois retester demain et je te dis!
Mais la fonction lireEntier est bonne non?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Smily91 Messages postés 3 Date d'inscription mercredi 17 avril 2013 Statut Membre Dernière intervention 19 avril 2013
19 avril 2013 à 23:15
C'est bon finalement, merci beaucoup!
Le sujet peut etre supprimé ;)
0