我试图从以空字符串“”初始化的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"
。考虑到数组的其余部分用“”字符串填充,条件工作?因为不是,它只会被调用一次,然后将最小值设置为“”。
答案 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);
}