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

时间:2018-11-09 18:53:27

标签: c arrays strcpy

我试图从以空字符串“”初始化的2D数组中的一堆字符串中找到MIN字符串。用户输入一些字符串,然后strcpy结束,然后调用以下方法。但是,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"。考虑到数组的其余部分用“”字符串填充,条件工作?因为不是,它只会被调用一次,然后将最小值设置为“”。

1 个答案:

答案 0 :(得分:2)

您的问题是,如果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);
}