【发布时间】:2021-07-05 14:20:20
【问题描述】:
哟!所以我开始学习如何自己编码,对于这个练习,我必须创建一个函数,根据作为参数输入的整数符号显示“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)检查这个条件。尝试给出 2 个参数(lile./a.out hoge fuga),你会得到一个无限的Ps 或Ns。 -
如果
argc==2(因此 argv[1] 可用)而不是argc!=2(argv[1] 可能不可用),您可能想要执行您的操作。我不明白你的 while 循环的意图。但我假设您期望像./program -123这样的输入,所以您可能想要传递类似atoi(argv[1])(整数-123)而不是*argv[1],这将是输入的第一个字符的值(破折号的值45字符)。 -
是否允许使用标准库函数(如
atoi())? -
@MikeCAT no 不允许使用标准库函数(很确定我必须自己编写一个 atoi 代码)
-
@MikeCAT 你是对的,当我设置 (argc == 2) 时确实会出现无限循环,所以我可能做错了什么