gpt4 book ai didi

c - 指针和整数比较警告 C

转载 作者:行者123 更新时间:2023-11-30 18:36:35 24 4
gpt4 key购买 nike

使用 –l 表示最大数字,–s 表示最小数字,如果用户输入无效选项,程序应显示错误消息。我必须编写正常运行的代码。

当前错误是第一个和第二个 if() 语句中指针和整数的比较。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *numbers[])
{
//variables needed
int i,temp,max,min;

//find largest (-1)
if (!(strcmp(numbers[1],"-1")))
{
max = atoi(numbers[2]);
for (i=2;i<argc;i++)
{
if(numbers[i] >= 'a' && numbers[i] <= 'z')
{
printf("bad input");
}
else if(numbers[i] >= 'A' && numbers[i] <= 'Z')
{
printf("bad input");
}
else
{
temp = atoi(numbers[i]);
if (max<temp)
{
max = temp;
}
}
}
//output after loop
printf("\nThe largest number is %d\n",max);

}
else if (!(strcmp(numbers[1],"-s")))
{
min = atoi(numbers[2]);
for (i=2;i<argc;i++)
{
temp = atoi(numbers[i]);
if (min>temp)
{
min = temp;
}
}
printf("\nThe smallest number is %d\n",min);
}
else
{


}
return 0;
}

最佳答案

char *numbers[]

您的numbers是一个指向 char 的指针数组(请注意 [] 的优先级高于 * - 这就是它是指向指针的数组的原因),因此比较 if(numbers[i] >= 'a' && numbers[i] <= 'z')没有意义。

您需要的是 if(numbers[i][0] >= 'a' && numbers[i][0] <= 'z') 。同样对于以下条件,它应该是 if(numbers[i][0] >= 'A' && numbers[i][0] <= 'Z') 。因为char *numbers[]是指向 char 的指针数组,因此 numbers[i]是指向 char 的指针,因此可以通过 numbers[i][0] 访问第一个字符

关于c - 指针和整数比较警告 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40568886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com