web-dev-qa-db-fra.com

Erreur de compilation C: l'ID a renvoyé 1 état de sortie

Pour une raison quelconque, lorsque j'essaie de compiler un programme, le compilateur dit que l'autorisation est refusée et que Id a renvoyé 1 état de sortie. Quelqu'un pourrait-il me dire ce que cela signifie? Je vous remercie

#include <stdio.h>                                               /* Library inclusions */
#include "genlib.h" 
#include "simpio.h"

int binSearch(int val, int numbers[], int size1);                /* prototypes */
void sortArray (int numbers[], int size1);                       
int indexMax (int numbers[], int low, int high);
void swap (int numbers[], int loc, int loc1);
void getArray (int numbers[], int size1);
void displayArray (int numbers[], int size1);

main()
{
  int value, size1;

  printf("Enter the number of elements: ");
  size1=GetInteger(); 
  int numbers[size1];
  getArray(numbers, size1); 
  sortArray(numbers, size1); 
  displayArray(numbers, size1);
  printf("\nEnter value to find: ");
  value=GetInteger();
  binSearch(value, numbers, size1);
  getchar();
}

void sortArray (int numbers[], int size1)                        /*Function sortArray*/
{
 int i , maxInd;

 for (i= size1-1; i>=0;i--)
 {
     maxInd=indexMax(numbers, 0, i);
     swap (numbers, i, maxInd);
 }
}

void displayArray (int numbers[], int size1)                     /*Function displayArray*/
{
 int i;

 printf("This is the sorted set of numbers: \n");
 for (i=0; i< size1; i++)
 {
         printf ("%d\t", numbers[i]); 
     }
}

void getArray (int numbers[], int size1)                         /*Function getArray*/
{
 int i;

 for (i=0; i<size1; i++)
 {
     printf ("Enter the values of the %d elements: ", size1);
     numbers[i]=GetInteger();
 }
}

int indexMax (int numbers[], int low, int high)                  /*Function indexMax*/
{
int i, maxInd;

maxInd=high;
for (i=low;i<=high;i++)
{
    if (numbers[i]>numbers[maxInd]) 
    {
                   maxInd =i;
    }
    }
    return (maxInd);
}

void swap (int numbers[], int loc, int loc1)                     /*Function swap*/
{
 int temp;

 temp=numbers[loc];
 numbers[loc]=numbers[loc1];
 numbers[loc1]=temp;
}

int binSearch(int val, int numbers[], int size1)                 /*Function binSearch*/
{
 int low, high, mid;

 low=0;
 high=size1-1;
 while(low<=high)
 {
                 mid=(low+high)/2;
                 if(val<numbers[mid])
                 {
                                 high=mid-1;                
                 }            
                 else if(val>numbers[mid])
                 {
                                 low=mid+1; 
                 }   
                 else if(val==numbers[mid])
                 {
                                 printf("Your number is in location %d\n", mid+1);break;    
                 } 
                 else
                 {
                                 printf("Your value is not in the array.");        
                 }
   }
}

Ce qui précède est le code de l’algorithme de recherche binaire que j’ai essayé de compiler.

7

Je devine peut-être que l'ancienne instance de votre programme est toujours en cours d'exécution. Windows ne permet pas de modifier les fichiers actuellement "en cours d'utilisation" et votre éditeur de liens ne peut pas écrire le nouveau fichier .exe en haut du fichier en cours d'exécution. Essayez d'arrêter/tuer votre programme.

9
Kane

En utilisant code :: blocks, j'ai résolu cette erreur en faisant:

propriétés de l'espace de travail> Construire la cible> Construire les fichiers de la cible

et vérifier chaque fichier de projet.

0
bb8

Je parie avec certitude que c'est parce que vous n'avez pas fermé l'instance en cours du programme avant d'essayer de le recompiler.

Généralement, ld.exe renvoie 1 lorsqu'il ne peut pas accéder aux fichiers requis. Cela comprend généralement

  • Impossible de trouver le fichier objet à lier (ou Access denied)
  • Impossible de trouver un ou plusieurs symboles à lier
  • Impossible d'ouvrir l'exécutable pour l'écriture (ou AD)

Le programme a l'air complètement bien, donc le deuxième point ne devrait pas frapper. Dans les cas habituels, il est impossible que ld ne réussisse pas à ouvrir le fichier objet (sauf si vous avez un lecteur défectueux et un système de fichiers corrompu). Le premier point est également presque impossible.

Nous arrivons maintenant au troisième point. Notez que Windows n'autorise pas l'écriture dans un fichier lorsqu'il est utilisé, de sorte que l'instance en cours d'exécution de votre programme empêche ld.exe d'écrire le nouveau programme lié.

Donc, la prochaine fois, assurez-vous de fermer les programmes en cours avant de compiler.

0
iBug

Vous pouvez compiler votre programme pendant qu’un autre programme peut être exécuté en arrière-plan . Tout d’abord, voyez si un autre programme est en cours d’exécution.

0
user9110380