Я не думаю, что вы можете делать то, что вы хотите с MPI. Я программист на Фортране, так что терпите меня, если мое понимание C немного шатко. Кажется, вы хотите передать структуру данных, состоящую из 1 int и 1 строки (которую вы передаете, передавая расположение первого символа в строке) от одного процесса к другому? Я думаю, что вам нужно будет передать строку фиксированной длины, которая должна быть такой же длины, как любая из строк, которые вы действительно хотите передать. Зона приема для сбора этих строк должна быть достаточно большой, чтобы можно было принять все строки вместе с их длинами.
Возможно, вы захотите объявить новый тип данных MPI для своих структур; затем вы можете собрать их и, поскольку собранные данные включают в себя длину строки, восстановить полезные части строки в получателе.
Я не уверен в этом, но я никогда не сталкивался с действительно переменными длинами сообщений, которые вы, кажется, хотите использовать, и это похоже на MPI. Но это может быть что-то реализованное в последней версии MPI, с которой я никогда не сталкивался, хотя, глядя на онлайн-документацию, это не так.