Я пытаюсь запустить следующий код MPI. Проблема с scanf
. Команда продолжает принимать входные данные и никуда не уходит. Предполагается, что он принимает только одну входную строку.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mpi.h>
int main(int argc,char * argv[])
{
int npes, myrank, length = 10;
char string[length+1]; // array size changed to length +1 as suggested in comments.
memset(string, 0, length+1);
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &npes);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
if (myrank == 0) {
printf("Please enter the string of length %d or enter 0 to generate string randomly:\n", length);
scanf ("%10s", string); // format changed as suggested in comments
printf("%s\n", string);
}
MPI_Finalize();
return 0;
}
Выход:
Платформа: Mac OS X 10.10
Версия MPI: Open MPI: 1.8.3
Информация о системе: Apple LLVM версии 6.0 (clang-600.0.54) (на основе LLVM 3.5svn) Цель: x86_64-apple-darwin14.0.0 Модель потока: posix
Пожалуйста, поправьте меня, если я где-то ошибаюсь.
\0
в конце всех строк:char string[length+1];
Изменяет ли это поведение? Вы можете указать максимальное количество символов для чтения:scanf ("%10s", string);
- person francis   schedule 29.10.2014char string[length+1];
2) поменяли наscanf ("%10s", string);
или 3) на оба? Вам нужны оба. - person chux - Reinstate Monica   schedule 29.10.2014