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.
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.
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.
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
Access denied
)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.
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.