1
다음 MPI 코드를 실행하려고합니다. 문제는 scanf
입니다. 명령은 입력을 계속하고 어디에도 없습니다. 그것은 하나의 입력 문자열만을 취하기로되어 있습니다.OpenMPI C 언어 scanf가 입력을 중지하지 않습니다 (Mac OS X 10.10)
#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;
}
출력 :
플랫폼 : 맥 OS X 10.10
MPI 버전 : 오픈 MPI : 1.8.3
시스템 정보 : 애플 LLVM 버전 6.0 (그 소리-600.0.54) (LLVM의 3.5svn 기준) 대상 : x86_64에-사과 darwin14.0.0 스레드 모델 : POSIX
내가 잘못 어딘가에 나는 경우에 저를 수정하십시오.
모든 문자열의 끝에서 널 문자'\ 0'을위한 장소를 남겨 두십시오 :'char string [length + 1];'동작을 변경합니까? 읽을 최대 글자 수를 지정할 수 있습니다 :'scanf ("% 10s", string); – francis
은 @francis를 작동시키지 않았습니다. – harshitgupta
"작동하지 않는"것은 무엇입니까? 변경 결과를 게시하십시오. 1)'char string [length + 1]; 2)'scanf ("% 10s", string); 또는 3) 둘 모두로 변경 했습니까? 둘 다 필요합니다. – chux