2013-07-18 314 views
6

出于某种原因,当我尝试编译程序时,编译器说权限被拒绝,并且Id返回1退出状态。谁能告诉我这是什么意思?谢谢C编译错误:Id返回1退出状态

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

以上是我试图编译的二分查找算法代码。

+1

请问您是否可以添加您的程序和编译器命令来编译它? –

+0

您是否拥有源文件的阅读权限?你有写入权限的目录? – jxh

+0

这不是一个编程问题 - 而是一个系统操作问题。至少应该指定您的操作系统。 –

回答

8

我猜测你的程序的旧实例仍在运行。 Windows不允许更改当前“正在使用”的文件,并且链接程序无法将新的.exe文件写入正在运行的文件的顶部。尝试停止/杀死你的程序。

+1

它在杀死任务后仍然给出相同的错误消息。代码可能有问题吗? –

+0

确切地说,重新启动我的电脑解决了这个问题(无法手动杀死,因为我找不到在任务管理器中运行的程序) –

-3

它可能是你说的主要{...我使用int main {当我开始我的主。

+2

没有。当没有指定返回类型时,在C中假定“int”。 – ApproachingDarknessFish

-2

这个答案是为C++开发人员编写的,因为我被一个像这样的问题所困扰。这里是解决方案:

而不是

main() 
{ 

} 

请键入

int main() 
{ 

} 

所以可以执行的主要功能。

顺便说一句, 如果您编译C /与执行无主函数C++源文件, 肯定会有一个错误消息说:

"[Error] Id returned 1 exist status"

但有时我们只是不需要主要功能在文件中, 在这种情况下,只需忽略该错误信息。

-3

它好像说到当u必须运行您的程序的以前编译版本

+1

这就是现有的(4岁)接受答案说。你的回答什么都不加。 – melpomene

-2

我的解决方法是尝试打开就可以成功运行,你做的另外一台PC的另一个文件,打开该文件,运行它之后,复制该文件并创建一个新文件。尝试运行它。

0

我敢打赌,这是因为你没有关闭程序的运行实例,然后尝试重新编译它

通常,ld.exe在无法访问所需文件时返回1。这通常包括

  • 无法找到目标文件链接(或者Access denied
  • 无法找到一个或多个符号链接
  • 无法打开可执行文件写入(或AD )

该程序看起来非常好,所以第二点不应该打。在通常情况下,ld不能打开目标文件(除非你的驱动器和文件系统有问题),所以第一点几乎是不可能的。

现在我们来看第三点。请注意,Windows在使用时不允许写入文件,因此程序正在运行的实例会阻止ld.exe将新的链接程序写入该文件。

因此下次确定在编译之前关闭正在运行的程序。

0

您可以编译您的程序,而另一个程序可能在后台运行。首先,看看是否有其他程序正在运行。关闭它然后尝试ro编译。

+0

请编辑您的答案并提供更多信息。你的回答看起来像一个评论,而不是一个答案。 – Siraj

0

使用代码::块,我已经这样做解决了这个错误:

工作区属性>构建目标>构建目标文件

,并检查每一个项目文件。

相关问题