最後にいくつかのデータを連結する必要がある文字列があります。私の問題は、ループが回るたびに、文字列の最後に以前のループ データを取得することです。例:データ
1 回目のループ反復 1234@3 2 回目のループ反復 3462@3@124 3 回目のループ反復 3676@3@124@67 など..
私がする必要があるのは、文字列といくつかのデータを最後まで受け取り、ループの繰り返しごとに文字列を設定することです。
if(rank == 0)
{
char *recv_str = malloc(PRECISION);
int retVal = -10;
int len;
long exp;
char *str_exp = malloc(sizeof(char) * 8);
char *deli = "@";
for(i=1; i<= size - 1 ; i++)
{
MPI_Recv(&exp,1,MPI_LONG,i,1,MPI_COMM_WORLD,&status);
MPI_Recv(&len,1,MPI_INT,i,1,MPI_COMM_WORLD,&status);
MPI_Recv(recv_str,len, MPI_CHAR, i, 1,MPI_COMM_WORLD, &status);
sprintf(str_exp, "%lu", exp);
sprintf(recv_str + strlen(recv_str), deli);
sprintf(recv_str + strlen(recv_str),str_exp);
retVal = mpf_set_str(pi_ret, recv_str, 10);
//printf("string = %s \n", recv_str);
//printf("\nvalid? %d length %d\n", retVal, len);
//printf("str_exp = %s \n", str_exp);
mpf_add(pi, pi, pi_ret);
//printf("\nsize of %lu \n", strlen(recv_str));
}