在字符数组中查找最小字符串

finding the min string in an array of chars

我试图从用空字符串“”初始化的二维数组中的一堆字符串中找到 MIN 字符串。用户输入一些字符串,然后 strcpyied 然后下面的方法得到 called.However if 语句没有按预期工作:

void determineMIN(char strings[][MAX]) {
  char minC[MAX] = "Z"; // Highest alphabetic uppercase char in ASCII(value: 090)
  int i;
  for(i=0; i < MAX; i++) {
    if((strcmp(minC,strings[i]) >= 0) && (strcmp(minC,"") != 0)) { 
      printf("called\n");
      strcpy(minC,strings[i]);
    } else { // < 0
      continue;
    }
  }
  printf("MIN: %s\n",minC);
}

以这种情况为例:用户输入了以下3个字符串"cat""dog""sheep"。考虑到数组的其余部分填充了“”字符串应该'我的条件不行吗?因为它不只被调用一次然后最小值设置为“”。

你的问题是,如果 minC 等于 "",你会跳过,但你应该检查 strings[i]:

void determineMIN(char strings[][MAX])
{
  char minC[MAX];
  int i;

  strcpy(minC, strings[0]);
  for(i=1; i < MAX; i++)
  {
    if((strcmp(strings[i],"") != 0) && (strcmp(strings[i], minC) < 0)) 
    { 
      printf("called\n");
      strcpy(minC,strings[i]);
    }
    else
    {
      continue;
    }
  }
  printf("MIN: %s\n",minC);
}