C程序不会在提示符下重新运行,但会在提示符时关闭

时间:2014-09-28 19:29:53

标签: c arrays while-loop buffer

我的程序计算出值n的Phi Totient。在第一次运行后,我询问用户是否想再次运行该程序。当输入n时它可以工作但是当按下y时却没有,实际上程序似乎再次运行但是与前一次运行中的n值相同。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int n=0, t, c;
char buffer[13], y[4];

y[0]='y';

while(y[0]=='y' || y[0]=='Y')
{
  while(n==0)
  {
     printf("Enter an positive integer for n: \n");
     fgets(buffer, sizeof(buffer), stdin);
     if(strlen(buffer) > 13)
     {
        while((c = getchar()) != '\n' && c != EOF);
     }
     n = strtol(buffer, (char **)NULL,10);
     if(n<0){n=0;}
  }

  if(t == 1)
  {
     t=isPrime(n);
     printf("Phi of %d = %d \n", n, n-1);
  }
  else
  {
     t=factorization(n);
  }
  y[0]='x';
  while((y[0]!='y') && (y[0]!='Y') && (y[0]!='n') && (y[0]!='N'))
  {
     printf("Would you like to run again? (y/n) ");
     fgets(y, sizeof(y), stdin);
     if(y[1] != '\n' && y[2] != '\0')
     {
       while((c = getchar()) != '\n' && c != EOF);
     }
  }

  }
  return 0;
}

0 个答案:

没有答案