Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1753 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [réglé] probleme d'execution de programme C..

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[réglé] probleme d'execution de programme C..

n°1522503
mic-chan
Posté le 01-03-2007 à 19:51:33  profilanswer
 

bonjour
j'ai un pti probleme qui me rend fou ce soir... je programme en C sur les PC de mon IUT et tout fonctionne nickel, compilation et execution sur un terminal de linux
j'ai transferer les programmes sur mon propre PC chez moi, j'utilise un terminal de Mandriva, ca compile bien mais par contre pas moyen d'executer...
voici les commandes que j'ai tapé :
gcc -c main.c -o /home/mic/bin/main.exe
chmod +x /home/mic/bin/main.exe(jusque là ca marche)
main.exe
main.exe : Erreur de format pour exec(). Binary file not executable.
 
voilà :/ donc si quelqu'un pouvait m'aider rapidement.. je sais pas si c'est utile de preciser, j'utilise un terminal csh


Message édité par mic-chan le 03-03-2007 à 13:38:38
mood
Publicité
Posté le 01-03-2007 à 19:51:33  profilanswer
 

n°1522509
-Opera-
mago spé électricité
Posté le 01-03-2007 à 20:15:13  profilanswer
 

main tout court et non main.exe. Et le chmod +x est inutile.


---------------
You get so used to things the way they are. And I've always been alone. I guess that makes me lonely.
n°1522512
0x90
Posté le 01-03-2007 à 20:20:09  profilanswer
 

euh, le -c il devrait pas être là.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1522514
mic-chan
Posté le 01-03-2007 à 20:23:42  profilanswer
 

malheureusement j'ai essayé aussi...  
/home/mic/bin/main: Erreur de format exec(). Binary file not executable
ca fait pareil avec main.o et main.out...

n°1522515
-Opera-
mago spé électricité
Posté le 01-03-2007 à 20:26:49  profilanswer
 

Fais voir le code. Et compile-le au minimum avec -Wall.


---------------
You get so used to things the way they are. And I've always been alone. I guess that makes me lonely.
n°1522518
mic-chan
Posté le 01-03-2007 à 20:36:42  profilanswer
 

voici le code des programmes concernés, ils compilent et (d'habitude) s'executent correctement
 
main

Code :
  1. #include "tab_personne.h"
  2. #include <stdio.h>
  3. #include <string.h>
  4. int main() {
  5.   Personne tab_pers[MAX_PERS];
  6.   char nom[LONG_CHAINE];
  7.   Personne p;
  8.   int taille;
  9.   int choix,place;
  10.   printf("Quel est le nombre de personne (Max=%d) :",MAX_PERS);
  11.   scanf("%d",&taille);
  12.  
  13.   Saisir(tab_pers,taille);
  14.   Trier(tab_pers,taille);
  15.   Afficher(tab_pers,taille);
  16.   choix=-1;
  17.   while (choix != 0) {
  18.     printf(".: Menu :. \n" );
  19.     printf(" (0) Quitter \n (1) Recherche \n (2) Insertion \n (3) Suppression \n (4) Affichage \n" );
  20.     scanf("%d",&choix);
  21.     switch (choix) {
  22.     case 1 : {
  23.       printf("Qui recherchez-vous ?" );
  24.       scanf("%s",nom);
  25.       strcpy(p.cnom,nom);
  26.       place=RechercherDicho(tab_pers,taille,p);
  27.       if (place!=-1) {
  28. printf("%s a %d ans \n",tab_pers[place].cnom,tab_pers[place].cage);
  29.       }else{
  30. printf("%s n'est pas dans le tableau\n",nom);
  31.       }
  32.       break;
  33.     }
  34.     case 2 : {
  35.       printf("Nom : " );
  36.       scanf("%s", p.cnom);
  37.       printf("Age : " );
  38.       scanf("%d", &p.cage);
  39.       taille = Inserer(tab_pers,taille,p);
  40.       break;
  41.     }
  42.     case 3 : {
  43.       printf("Nom : " );
  44.       scanf("%s", p.cnom);
  45.       taille = Supprimer(tab_pers,taille,p);
  46.       break;
  47.     }
  48.     case 4 : {
  49.       Afficher(tab_pers, taille);
  50.     }
  51.     }
  52.   }
  53. }


 
tab_personne.h

Code :
  1. #ifndef _Personne
  2. #define _Personne
  3. #define MAX_PERS 30
  4. #define LONG_CHAINE 20
  5. typedef struct {
  6.   char cnom[LONG_CHAINE];
  7.   int cage;
  8. } Personne;
  9. void Saisir(Personne t[],int n);
  10. void Afficher(Personne t[],int n);
  11. void Trier(Personne t[],int n);
  12. int Inserer(Personne t[],int n,Personne p);
  13. int RechercherDicho(Personne t[],int n,Personne p);
  14. int Supprimer(Personne t[],int n,Personne p);
  15. #endif


 
tab_personne.c

Code :
  1. #include "tab_personne.h"
  2. #include <stdio.h>
  3. #include <string.h>
  4. void Saisir(Personne t[],int n) {
  5.   int i;
  6.   for (i=0;i<n;i++) {
  7.     printf("Saisir le nom de l'individu : " );
  8.     scanf("%s",t[i].cnom);
  9.     printf("Entrer son age : " );
  10.     scanf("%d",&t[i].cage);
  11.   }
  12. }
  13. void Afficher(Personne t[],int n){
  14.   int i;
  15.   for(i=0;i<n;i++){
  16.     printf("Personne %d :\n",i+1);
  17.     printf("Nom : %s\n",t[i].cnom);
  18.     printf("Age : %d\n",t[i].cage);
  19.   }
  20. }
  21. void Trier(Personne t[],int n) {
  22.   int i,j,fin;
  23.   fin=1;
  24.   i=n-1;
  25.   Personne temp;
  26.   while ((fin == 1)&&(i>0)) {
  27.     fin=0;
  28.     for (j=0;j<i;j++) {
  29.       if (strcmp(t[j].cnom,t[j+1].cnom)>0) {
  30. strcpy(temp.cnom,t[j].cnom);
  31. temp.cage=t[j].cage;
  32. strcpy(t[j].cnom,t[j+1].cnom);
  33. t[j].cage=t[j+1].cage;
  34. strcpy(t[j+1].cnom,temp.cnom);
  35. t[j+1].cage=temp.cage;
  36. fin=1;
  37.       }
  38.     }
  39.     i--;
  40.   }
  41. }
  42. int Inserer(Personne t[],int n,Personne p) {
  43.   int i=n-1;
  44.   while (strcmp(p.cnom,t[i].cnom)<0) {
  45.     t[i+1]=t[i];
  46.     i--;
  47.   }
  48.   strcpy(t[i+1].cnom,p.cnom);
  49.   t[i+1].cage=p.cage;
  50.   return n+1;
  51. }
  52. int RechercherDicho(Personne t[],int n,Personne p) {
  53.   int binf=0;
  54.   int bsup=n-1;
  55.   int trouve=1;
  56.   int place;
  57.   int res=-1;
  58.   while ((trouve == 1)&&(binf <= bsup)) {
  59.     place=(binf+bsup)/2;
  60.     if (strcmp(t[place].cnom,p.cnom)==0){
  61.       trouve=0;
  62.       res=place;
  63.     }else{
  64.       if (strcmp(t[place].cnom,p.cnom)>0){
  65. bsup=place-1;
  66.       }else{
  67. binf=place+1;
  68.       }
  69.     }
  70.   }
  71.   return res;
  72. }
  73. int Supprimer(Personne t[],int n,Personne p) {
  74.   int place=RechercherDicho(t,n,p);
  75.   int i;
  76.   for (i=place;i<n-1;i++) {
  77.     t[i]=t[i+1];
  78.   }
  79.   strcpy(t[n-1].cnom, "" );
  80.   t[n-1].cage = 0;
  81.   return n-1;
  82. }


 
j'ai aussi un makefile

Code :
  1. OBJS = tab_personne.o main.o
  2. CC = gcc
  3. CFLAGS = -Wall -g
  4. all : $(OBJS)
  5. $(CC) $(OBJS) -o executable
  6. tab_personne.o : tab_personne.c tab_personne.h
  7. $(CC) $(CFLAGS) -c tab_personne.c -o tab_personne.o
  8. main.o : main.c
  9. $(CC) $(CFLAGS) -c main.c -o main.o
  10. clean :
  11. rm -f executable core *.o
  12. extremiste :
  13. rm -f *~


 
la commande make me créé le fichier nommé executable et quand j'ecrit executable dans le terminal j'ai un command not found


Message édité par mic-chan le 01-03-2007 à 21:18:54
n°1522532
mic-chan
Posté le 01-03-2007 à 21:02:01  profilanswer
 

le -Wall m'affiche un warning :
main.c: in function 'main' :
main.c:56: warning: control reaches a non-void function
 
je suis quasiment sûr que j'avais deja ce message lorsque j'ai compilé sur le PC sur lequel j'ai programmé et que ca n'avait pas géné l'execution
 
sur mon PC, le fichier executable se crée bien aussi, donc je comprend vraiment pas cette erreur command not found... :/

Message cité 1 fois
Message édité par mic-chan le 01-03-2007 à 21:05:35
n°1522544
-Opera-
mago spé électricité
Posté le 01-03-2007 à 21:29:51  profilanswer
 

mic-chan a écrit :

le -Wall m'affiche un warning :
main.c: in function 'main' :
main.c:56: warning: control reaches a non-void function

 

je suis quasiment sûr que j'avais deja ce message lorsque j'ai compilé sur le PC sur lequel j'ai programmé et que ca n'avait pas géné l'execution

 

sur mon PC, le fichier executable se crée bien aussi, donc je comprend vraiment pas cette erreur command not found... :/

 

Pour l'exécuter, ./ devant l'exécutable. Ton main n'a pas de paramètre (là en l'occurence : void) et il doit retourner un int (return 0; par exemple).
Les scanf() c'est dangereux. :o


Message édité par -Opera- le 01-03-2007 à 21:30:25

---------------
You get so used to things the way they are. And I've always been alone. I guess that makes me lonely.
n°1522548
mic-chan
Posté le 01-03-2007 à 21:35:38  profilanswer
 

merci il fallait bien mettre ./executable ^_^ j'avais l'habitude de ne pas mettre ./et jusqu'a present ca marchait donc je ne m'etais jamais posé de question la dessus  :sweat:  
 
encore merci ^^
 

n°1522549
Elmoricq
Modérateur
Posté le 01-03-2007 à 21:37:21  profilanswer
 

C'est surement parce que jusqu'à présent, "." était dans $PATH :o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [réglé] probleme d'execution de programme C..

 

Sujets relatifs
Probleme scanf et char[C] probleme comprehension
Ajax Probleme Open fichier XML IE7[PHP] Probleme de variable dans une clause WHERE
[réglé] fonction de calcul de distancegetElementsByTagName probleme
Problème type "fatal error :Cannot instantiate..."probleme internet exporer 6 !!!
Problème de sécurité des donnéesProblème mineur localhost
Plus de sujets relatifs à : [réglé] probleme d'execution de programme C..


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR