c-创建一个函数,根据输入的整数显示N或P



Yo!所以我开始学习如何自己编码,在这个练习中,我必须创建一个函数,根据作为参数输入的整数符号显示"N"或"P"。如果n为负数,则显示"n"。如果n为正或为空,则显示"P"。我已经设法做到了,并提出了一个主要的工作。写入允许功能(无atoi等(

void    ft_is_negative(int n)
{
if (n >= 0)
{
write(1, "P", 1);
}
else
{
write(1, "N", 1);
}
}
int  main()
{
int i;
i = 200;
ft_is_negative(i);
}

然而我一直试图习惯在main中使用参数,但在使用它们时,我一直在努力获得一个有效的main。在这里,有了这个,我只是得到了马车("\n"(,我只是不明白为什么(这可能很明显,但我看不见(。谢谢你提前的帮助,如果你不想直接给我答案,那没关系,请给我指正确的方向。

void    ft_is_negative(int n)
{
if (n >= 0)
{
write(1, "P", 1);
}
else
{
write(1, "N", 1);
}
}
int main(int argc, char *argv[])
{
if (argc != 2)
{
while (argv[1])
{
ft_is_negative(*argv[1]);
}
}
write(1, "n", 1);
return 0;
}
  • if (argc != 2)错误。如果您想检查是否正好给出了1个参数,那么它应该是if (argc == 2)
  • while (argv[1])错误。它可能是一个无限循环,因为argv[1]没有在循环中更新

要检查传递的值是否为负数,您应该检查:

  • 如果第一个字符是-
  • 之后还有0以外的字符
  • 没有无效字符

可以这样做:

int main(int argc, char *argv[])
{
if (argc == 2)
{
char* p = argv[1];
int is_minus = 0, contain_nonzero = 0, contain_invalid = 0, contain_valid = 0;
if (*p == '-')
{
is_minus = 1;
p++;
}
else if (*p == '+')
{
p++;
}
for (; *p != ''; p++)
{
if ('0' <= *p && *p <= '9')
{
contain_valid = 1;
if (*p != '0') contain_nonzero = 1;
}
else
{
contain_invalid = 1;
}
}
if (contain_invalid || !contain_valid)
{
/* contain invalid character or no character (except for sign) */
write(1, "invalid", 7);
}
else if (is_minus && contain_nonzero)
{
/* contain minus sign and nonzero digit */
ft_is_negative(-1);
}
else
{
/* contain digit, positive or zero (including minus zero) */
ft_is_negative(0);
}
}
write(1, "n", 1);
return 0;
}

相关内容

  • 没有找到相关文章

最新更新