我一直在试图弄清楚为什么它不能打印出测试消息并进入while循环。有任何想法吗?

void getInput(char * string)
{
  char * tempString;
  int maxLength = 1026; // Accounts for NULL and \n.
  tempString = malloc(maxLength * sizeof(char));

  fgets(tempString, maxLength, stdin);
  size_t len = strlen(tempString);


  while ((int)len > maxLength)
  {
    printf("Test");
    if (tempString[len-1] == '\n')
    {
      tempString[len-1] = '\0';
      len = strlen(tempString);
    } // if
  } // while

最佳答案

fgets(tempString, maxLength, stdin);最多读取maxLength-1个字节。有关详细信息,请参见fgets man page

这意味着strlen(tempString)必须始终小于maxLength

您是不是要使用<作为循环测试?

 while ((int)len < maxLength)

09-04 07:32