C语言 分段故障(核心转储)



引用此链接我已经编写了以下内容。出现分段错误。我按照此处说明的步骤进行操作。

客户端代码:

int main(int argc ,char argv[]) {   
     if(argc>10)   {
    exit(1);
  }
  char *host,*endptr;
  host = argv[1];
  input *result;
  double *ptr;
  input array;
  int i=0;
  CLIENT *clnt;
  array.len=argc-2;
  printf("%d",argc);
  For (i=2;i<argc-1;i++)
  {
*ptr = strtod(argv[i],&endptr);
array.numbers[i-2]=*ptr;
ptr++;
}
  clnt = clnt_create(host,SORT,SORTVERS,"udp");
  if(clnt==NULL)
  {
     clnt_pcreateerror(host);
     exit(1);
  }
  result = sortprog_1(&array,clnt);
  for(i=0;i<array.len;i++)
  {
    printf("%fn",result->numbers[i]);
  }
  clnt_destroy(clnt);
}

排序.x 代码

struct input{
    double numbers[200];
    int len;
};
typedef struct input input;
program SORT{
    version SORTVERS{
        input SORTPROG(input) = 1;
        }=1;
}=22856;

服务器代码:

input* sortprog_1(input* array, CLIENT *clnt)
{

    int i,j;
    double temp;
    for(i=0;i<array->len-1;i++)
    {
        for(j=0;j<array->len-1;j++)
            if(array->numbers[i]>array->numbers[j]) 
            {   
                temp=array->numbers[i];
                array->numbers[i]=array->numbers[j];
                array->numbers[j]=temp;
            }
    }
    for(i=0;i<array->len;i++)
    {
    printf("%fn",array->numbers[i]);
    }
    return array;
}
input* sortprog_1_svc(input* array, struct svc_req *clnt)
{
CLIENT *client;
return(sortprog_1(array,client));
}
double *ptr;
...
*ptr = strtod(argv[i],&endptr);
array.numbers[i-2]=*ptr;
ptr++;

ptr实际上并没有指向任何地方,您正在尝试使用其存储。为它分配一些内存!

相关内容

  • 没有找到相关文章

最新更新