在 C 中通过 mpi 发送已知大小的字符串

Sending a string of known size via mpi in C

我是如何学会通过 MPI 发送和接收发送整数的,但事实证明,以这种方式发送字符串的过程更加复杂。 我的尝试失败了:

    char value="10@1";
    /rank 0/
    MPI_Send(&value, value.size(), MPI_CHAR, 1, 0, MPI_COMM_WORLD);

    /rank1/
    MPI_Recv(&value, 1, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status);
    printf("%s",value);

我该怎么做?如果有帮助,接收方知道字符串的大小。

理想情况下,如果有人可以提供从等级 0 到 1 的字符串“10@1”的示例。

您的问题似乎出在这里:

char value="10@1";

正确的代码应该是:

char* value="10@1";

说明:单个字符不能包含字符串。如果代码编译通过,字符串的第一个字符的地址将被分配给字符变量。事实上,即使是 32 位或 64 位地址也无法容纳在一个字节字符中。

从您尝试调用的 size() 方法来看,您似乎受到了 C++ 中可用字符串 class 的影响。

string value="10@1"; // This is OK but not C anymore.