./a.out:文件无法识别:文件截断了collect2:错误:ld返回1退出状态?

时间:2014-06-13 19:19:04

标签: c

我编写了一个小程序,用一个单独的函数返回的素数填充数组。程序编译正常,但当我去运行可执行文件时,我得到上述错误。这是我的源代码。我不确定为什么会发生这种情况。这里的任何人都可以帮我编译并运行以下代码吗?我想知道它是否在我的笔记本电脑上,但我真的没有任何线索。如果这有帮助的话,我正在运行linux mint。

#include <stdio.h>

int prime(int x);

int main()
{
    int intergers,index,return_value;
    int array[100]={2};                                           /*intialize array[0] being 2*/

    for(index=1;index<100;index=index+1)                          /*begin array index at array[1]*/
    {
        for(intergers=3;intergers<102;intergers=intergers+1)      /*check for prime numbers starting from 3*/
        {
            return_value = prime(intergers);

            if(return_value==999)
                array[index]=-1;
            else
                array[index]=return_value;
        }
    }
    printf("hello world");
}

int prime(int x)
{
    int divisors,count,value;

    for(divisors=2;divisors<x;divisors=divisors+1)
    {
        if(x%divisors==0)
        {
            value=999;
            break;
        }
        else
        {
            value=x;
        }

    }
    return value;
}

1 个答案:

答案 0 :(得分:0)

以下代码使用以下命令在SuSE SLES 11上编译和链接gcc编译器时没有错误或警告:gcc -Wall -o test test.c

#include <stdio.h>

int prime(int x);

int main()
{
    int intergers,index,return_value;
    int array[100]={2};                                           /*intialize array[0] being 2*/

    for(index=1;index<100;index=index+1)                          /*begin array index at array[1]*/
    {
        for(intergers=3;intergers<102;intergers=intergers+1)      /*check for prime numbers starting from 3*/
        {
            return_value = prime(intergers);

            if(return_value==999)
                array[index]=-1;
            else
                array[index]=return_value;
         }
    }
    printf("hello world\n");

   return(0);  // Added this line to rid compiler: warning: control reaches end of non-void function 
}

int prime(int x)
{
    int divisors,/* count, */ value;

    for(divisors=2;divisors<x;divisors=divisors+1)
    {
        if(x%divisors==0)
        {
            value=999;
            break;
        }
        else
        {
            value=x;
        }

    }
    return value;
}
然后我执行了程序:

> ./test
hello world

代码按预期执行。