2013-07-18 27 views
6

Per qualche motivo, quando provo a compilare un programma, il compilatore dice che l'autorizzazione è stata negata e l'ID ha restituito 1 stato di uscita. Qualcuno potrebbe dirmi cosa significa? GrazieErrore di compilazione C: ID restituito 1 stato di uscita

#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.");   
       } 
    } 
} 

Quanto sopra è il codice dell'algoritmo di ricerca binario che ho provato a compilare.

+1

Potresti aggiungere il tuo programma e il comando del compilatore che stai utilizzando per compilarlo? –

+0

Hai il permesso di lettura sul file sorgente? Hai il permesso di scrittura per la directory? – jxh

+0

Questa non è una domanda di programmazione, ma una questione di operazioni di sistema. Come minimo, devi specificare il tuo sistema operativo. –

risposta

8

Posso indovinare, la vecchia istanza del programma è ancora in esecuzione. Windows non consente di modificare i file che sono attualmente "in uso" e il tuo linker non può scrivere il nuovo .exe in cima a quello in esecuzione. Prova a fermare/uccidere il tuo programma.

+1

Ancora dà lo stesso messaggio di errore dopo aver ucciso l'attività. C'è forse qualcosa di sbagliato nel codice? –

+0

Esattamente, il riavvio del mio PC ha risolto il problema (non poteva uccidere manualmente perché non riuscivo a trovare il programma in esecuzione in Task Manager) –

-3

potrebbe essere che hai appena detto principale {.... Io uso int principale {quando avvio il mio principale.

+2

No. 'int' è assunto in C quando non viene specificato alcun tipo di ritorno. – ApproachingDarknessFish

-2

Questa risposta è scritta per gli sviluppatori C++, perché ero ossessionato da un tale problema come uno. Ecco la soluzione:

Invece di

main() 
{ 

} 

digita

int main() 
{ 

} 

modo che la funzione principale può essere eseguita.

A proposito, se si compila un C/C++ file sorgente con nessuna funzione principale da eseguire, ci sarà sicuramente un messaggio bug dicendo:

"[Error] Id returned 1 exist status"

Ma a volte abbiamo solo non è necessario funzione principale nel file, in questo caso, basta ignorare il messaggio di errore.

-3

sembra come se si tratta quando u hanno una versione precedente compilata del programma in esecuzione

+1

Ecco cosa dice la risposta accettata (4 anni) esistente. La tua risposta non aggiunge nulla. – melpomene

-2

La mia soluzione è cercare di aprire un altro file che è possibile eseguire con successo che si fa a un altro PC, aprire il file e eseguilo, dopo che copia quel file e crea un nuovo file. Prova ad eseguirlo.

0

Scommetto che questo è perché non hai chiuso l'istanza in esecuzione del programma prima di provare a ricompilarlo.

Generalmente, ld.exe restituisce 1 quando non è in grado di accedere ai file richiesti. Questo in genere include

  • Impossibile trovare il file oggetto da collegare (o Access denied)
  • non riesce a trovare uno o più simboli di collegare
  • Impossibile aprire il file eseguibile per la scrittura (o AD)

Il programma sembra completamente a posto, quindi il secondo punto non dovrebbe colpire. Nei casi normali, è impossibile che ld non riesca ad aprire il file oggetto (a meno che non si abbia un'unità guasta e un file system sporco), quindi anche il primo punto è quasi impossibile.

Ora arriviamo al terzo punto.Notare che Windows non consente la scrittura su un file quando è in uso, pertanto l'istanza in esecuzione del programma impedisce a ld.exe di scrivere su di esso il nuovo programma collegato.

Quindi la prossima volta assicurati di chiudere i programmi in esecuzione prima della compilazione.

0

È possibile compilare il programma mentre un altro programma potrebbe essere in esecuzione in background. Prima di tutto, controlla se un altro programma è in esecuzione. Chiudi e prova la compilazione.

+0

Modifica la tua risposta e fornisci ulteriori informazioni. La tua risposta sembra un commento piuttosto che una risposta. – Siraj

0

Uso Code :: Blocks, mi hanno risolto questo errore facendo:

proprietà dell'area di lavoro> costruire target> costruire file di destinazione

e controllare ogni file di progetto.

Problemi correlati