【问题标题】:finding the min string in an array of chars在字符数组中查找最小字符串
【发布时间】:2018-11-09 18:53:26
【问题描述】:

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

【问题讨论】:

  • 是的,你说得对,我忘了!在 () 前面。我可能在某个地方还有另一个错误,因为它将绵羊打印为 MIN。我再看一遍
  • (strcmp(minC,"") != 0)更改为(strcmp(strings[i],"") != 0),因为如果strings[i]""而不是minC,您想跳过。

标签: c arrays strcpy


【解决方案1】:

如果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);
}

【讨论】:

  • 你是对的,对我犯的一些错误感到抱歉。感谢您帮助我理解并修复我的错误!
猜你喜欢
  • 2012-06-30
  • 2019-12-10
  • 2020-06-19
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 2019-07-16
  • 2017-03-22
相关资源
最近更新 更多