2014-02-19 2 views
1

필자는이 문제에 착수했습니다. 불행하게도 "generate"라는 이중 문자를 인쇄하면 분명히 사용자가 말하는 숫자가되지만, 어떤 이유로 그 문자는 같은 방식으로 작동하지 않습니다. 이것은 유닉스 btw에 있습니다.사용자 입력이 인식되지 않지만 처음 숫자가 설정된 경우 프로그램이 작동합니다.

double generate; 
int child1, child2, retval, first, second, next, c; 
//generate = 10; 
first = 1; 
second = 1; 

retval = pipe (pfd); 

if (retval != 0) { 
    fprintf(stderr, "Pipe failed\n"); 
    exit(0); 
} 

printf("Enter the number of Fibinachi numbers you'd like to generate: \n"); 
scanf("%d", &generate); 
//printf("%d\n", generate); 

child1 = fork(); 

if(child1 == 0) 
{ 
    child2 = fork(); 

    if(child2 == 0) 
    { 
     printf("Im the child child \n"); 
     for (c = 0; c < generate; c++) 
     { 
      if (c <= 1) 
       next = 1; 
      else 
      { 
       next = first + second; 
       first = second; 
       second = next; 
      } 
      write (pfd[WRITE_END], &next, sizeof(int)); 
     } 
    } 
    else 
    { 
     printf("Im the child \n"); 
     FILE * Output; 
     Output = fopen("data.txt", "w+"); 

     for (c = 0; c < generate; c++) 
     { 
      read(pfd[READ_END], &next, sizeof(int)); 
      fprintf(Output, "%d\n", next); 

      printf("%d\n", next); 
      wait(NULL); 
     } 
    } 
} 
else 
{ 
    printf("Hey, I am the Parent.\n"); 

} 

exit(1); 

답변

1

double type 변수를 읽는 데 %lf을 사용하십시오.

double generate;

scanf("%d", &generate); - 변수가 generate = 10;처럼 초기화 경우>scanf("%lf", &generate);

는이 generate = 10.0;으로 고려하고 잘 작동합니다.

+0

나는 너무 행복하다. 그러나 동시에 나는 너무 좌절해서 그렇게 쉽게 고칠 수 없었다. – IamAxel

+0

@ user3326322 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Jeyaram

+1

기다리는 중입니다. 4 분이 더 기다리는 중입니다. 그 때까지 대답으로 받아 들일 수 없다고합니다. – IamAxel

관련 문제