RPC: невозможно напечатать весь массив на клиенте из указателя возврата на сервере C - PullRequest
0 голосов
/ 30 сентября 2018

Я пишу код для реализации RPC.В частности, Клиент отправляет массив на сервер.Сервер отсортировал массив, сохранил этот массив в результате указателя *Но в клиенте, когда я пытаюсь распечатать весь отсортированный массив, выводится только первый символ отсортированного массива.Как я могу напечатать весь отсортированный массив на клиенте?

Примечание: xarray_val - указатель на массив, а xarray_len - количество элементов в массиве

Клиент:

char *result_1;
arrays bubblesort_1_arg;

bubblesort_1_arg.xarray.xarray_val=values;
bubblesort_1_arg.xarray.xarray_len=len; 

result_1 = bubblesort_1(&bubblesort_1_arg, clnt);
if (result_1==(char *) NULL) {
    printf("error");
        clnt_perror (clnt, "call failed");
}
else { 
    printf("The bubble-sorted array is: %s \n", result_1); 
}

Сервер:

char *result = malloc(argp->xarray.xarray_len * sizeof(char));
char temp;
int i, j;

//Sorting
for (i=0; i < argp->xarray.xarray_len; i++) {
    for (j=0; j < argp->xarray.xarray_len-i-1; j++) {
        if ( *(argp->xarray.xarray_val+j) > *(argp->xarray.xarray_val+j+1)) {
            temp = *(argp->xarray.xarray_val+j);
            *(argp->xarray.xarray_val+j) = *(argp->xarray.xarray_val+j+1);
            *(argp->xarray.xarray_val+j+1) = temp;
        }       
    }
}

strncpy(result, argp->xarray.xarray_val, argp->xarray.xarray_len);
return result;

}

Я знаю, что argp-> xarray.xarray_val - это просто указатель на первый символ отсортированного массива.Вот почему в клиенте печатается только первый символ, но я не знаю, как это исправить, чтобы распечатать весь отсортированный массив на клиенте.

...