C编译错误:Id返回1退出状态

问题描述 投票:7回答:11

出于某种原因,当我尝试编译程序时,编译器表示权限被拒绝,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.");        
                 }
   }
}

以上是我试图编译的二进制搜索算法代码。

c compiler-errors permission-denied
11个回答
9
投票

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


-2
投票

我的解决方案是尝试打开另一个您可以在另一台PC上成功运行的文件,打开该文件并运行它,然后复制该文件并创建一个新文件。尝试运行它。


-3
投票

当你运行程序的先前编译版本时,它似乎就好了


0
投票

我敢肯定,这是因为在尝试重新编译之前你没有关闭程序的运行实例。

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

  • 找不到要链接的对象文件(或Access denied
  • 找不到要链接的一个或多个符号
  • 无法打开可执行文件进行写入(或AD)

该程序看起来完全正常,所以第二点不应该打。在通常情况下,ld无法打开目标文件(除非你有一个错误的驱动器和一个脏文件系统),所以第一点也几乎是不可能的。

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

所以下次确保在编译之前关闭正在运行的程序。


0
投票

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


0
投票

使用code :: blocks,我通过执行以下操作解决了这个错误:

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

并检查每个项目文件。


0
投票

只需在编译程序时尝试“gcc filename.c -lm”......它对我有用


-1
投票

1d返回1退出状态错误

首先,你必须通过单击文件new然后项目创建一个项目,并给项目名称选择语言c或c ++并选择为空。然后你的程序在那个项目下...然后给一个程序名保存它....确保你在一些项目下编译并运行一个程序......


-1
投票

是一个简单的MAYUS字。验证日志。


-2
投票

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


-2
投票

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

代替

main()
{

}

请输入

int main()
{

}

所以可以执行主要功能。

顺便说一下,如果你编译一个没有要执行主函数的C / C ++源文件,肯定会有一条错误消息说:

“[错误] ID返回1退出状态”

但有时我们只是不需要文件中的main函数,在这种情况下,只需忽略bug消息。

© www.soinside.com 2019 - 2024. All rights reserved.