出于某种原因,当我尝试编译程序时,编译器说权限被拒绝,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.");
}
}
}
以上是我试图编译的二进制搜索算法代码。
答案 0 :(得分:9)
我猜,你的程序的旧实例仍然在运行。 Windows不允许更改当前“正在使用”的文件,并且链接器无法在正在运行的文件的顶部编写新的.exe。尝试停止/删除你的程序。
答案 1 :(得分:0)
我敢肯定,这是因为在尝试重新编译之前你没有关闭程序的运行实例。
通常,ld.exe
在无法访问所需文件时返回1。这通常包括
Access denied
)该程序看起来完全正常,所以第二点不应该命中。在通常情况下,ld
无法打开目标文件(除非您有错误的驱动器和脏文件系统),所以第一点也几乎是不可能的。
现在我们谈到第三点。请注意, Windows不允许在文件正在使用时写入,因此正在运行的程序实例会阻止ld.exe
将新的链接程序写入其中。
因此,下次确保在编译之前关闭正在运行的程序。
答案 2 :(得分:0)
您可以编译程序,而其他程序可能在后台运行。 首先,查看另一个程序是否正在运行。关闭它然后尝试编译。
答案 3 :(得分:0)
使用code :: blocks,我通过执行以下操作解决了这个错误:
工作区属性&gt;构建目标&gt;构建目标文件
并检查每个项目文件。
答案 4 :(得分:0)
在编译程序时只需尝试“ gcc filename.c -lm” ...对我有用
答案 5 :(得分:-1)
1d返回1个退出状态错误
首先,您必须通过单击文件new来创建项目,然后单击项目并给项目名称选择语言c或c ++,然后还选择空。 然后,您的程序在该项目下...然后给它一个程序名称保存。...确保您在某个项目下可以编译并运行程序...
答案 6 :(得分:-1)
是一个简单的MAYUS单词。验证日志。
答案 7 :(得分:-2)
你可能只是说主要{....我使用 int main {当我开始我的主。
答案 8 :(得分:-2)
这个答案是为C ++开发人员编写的,因为我被这样的问题困扰着。这是解决方案:
而不是
main()
{
}
请输入
int main()
{
}
因此可以执行主要功能。
顺便说一下, 如果你编译一个没有要执行的主函数的C / C ++源文件, 肯定会有一条错误消息说:&#34; [错误] ID返回1存在状态&#34;
但有时我们不需要文件中的主要功能, 在这种情况下,只需忽略错误消息。
答案 9 :(得分:-2)
我的解决方案是尝试打开另一个您可以在另一台PC上成功运行的文件,打开该文件并运行它,然后复制该文件并创建一个新文件。尝试运行它。
答案 10 :(得分:-3)