【问题标题】:Sending a string of known size via mpi in C在 C 中通过 mpi 发送已知大小的字符串
【发布时间】:2015-05-18 00:44:41
【问题描述】:

我是如何学会通过 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?我建议打开警告并修复它们。

标签: c string mpi


【解决方案1】:

您的问题似乎在这里:

char value="10@1";

正确的代码应该是:

char* value="10@1";

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

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

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

【讨论】:

    猜你喜欢
    • 2013-04-23
    • 2013-11-13
    • 2014-08-24
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2014-01-01
    相关资源
    最近更新 更多