Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用MPI在文件中添加新行_C++_File_Io_Mpi - Fatal编程技术网

C++ 使用MPI在文件中添加新行

C++ 使用MPI在文件中添加新行,c++,file,io,mpi,C++,File,Io,Mpi,我正在使用MPI将一些数据存储到文件中: int main(int argc, char** argv) { MPI_Init(&argc, &argv); int num_procs = MPI::COMM_WORLD.Get_size(); int rank = MPI::COMM_WORLD.Get_rank(); MPI_Offset offset; MPI_File file; MPI_Status status; const int msgsize = 6; cha

我正在使用MPI将一些数据存储到文件中:

int main(int argc, char** argv) {
MPI_Init(&argc, &argv);
int num_procs = MPI::COMM_WORLD.Get_size();
int rank = MPI::COMM_WORLD.Get_rank();

MPI_Offset offset;
MPI_File file;
MPI_Status status;
const int msgsize = 6;
char message[msgsize + 1];

if ((rank % 2) == 0) strcpy(message, "Hello ");
else strcpy(message, "World!");

MPI_File_open(MPI_COMM_WORLD, "helloworld2.txt", MPI_MODE_CREATE | MPI_MODE_WRONLY,
        MPI_INFO_NULL, &file);
offset = (msgsize * rank);
MPI_File_seek(file, offset, MPI_SEEK_SET);

for (int i = 0; i < 5; i++) {
    MPI_File_write(file, message, msgsize, MPI_CHAR, &status);
}
MPI_File_close(&file);

MPI::Finalize();
//    return 0;
}
int main(int argc,char**argv){
MPI_Init(&argc,&argv);
int num_procs=MPI::COMM_WORLD.Get_size();
int rank=MPI::COMM_WORLD.Get_rank();
MPI_偏移量;
MPI_文件;
MPI_状态;
常量int msgsize=6;
字符消息[msgsize+1];
if((秩%2)==0)strcpy(消息“Hello”);
else strcpy(消息,“世界!”);
MPI_文件打开(MPI_COMM_WORLD,“helloworld2.txt”,MPI_模式创建,仅限MPI_模式编写,
MPI\u信息\u NULL和文件);
偏移量=(msgsize*秩);
MPI_文件搜索(文件、偏移、MPI_搜索集);
对于(int i=0;i<5;i++){
MPI文件写入(文件、消息、msgsize、MPI字符和状态);
}
MPI\u文件\u关闭(&文件);
MPI::Finalize();
//返回0;
}

我希望消息在每个时间步后都写在新行中(相当于串行模式下的std::endl)。有没有一种使用MPI的方法可以做到这一点?

您不能简单地在消息末尾附加一个
\n
字符吗?不起作用!我想我必须在每一个时间步重新定义偏移量,但我不知道当我从一条线移动到另一条线时,应该输入哪个值。解决了!我必须在MPI_文件_SEEK中使用MPI_SEEK_END而不是MPI_SEEK_SET作为参数。@user3492799,您应该将注释作为答案发布,并将其标记为正确。这样,未来的访问者将知道解决方案是什么。