【发布时间】:2021-06-16 16:15:37
【问题描述】:
这是测试器功能:
intA = intB = 0;
printf("TEST-2: ");
intA = getIntPositive(NULL);
if (intA == TEST_INT)
{
printf("<PASSED>\n");
}
else
{
printf("<!!! FAILED !!!>\n");
fail++;
}
这是我编写的获取正整数并返回它的函数:
int getIntPositive(int *num) {
do
{
scanf("%d", num);
if (*num <= 0)
{
printf("ERROR: Enter a positive value:");
}
} while (*num <= 0);
return *num;
}
【问题讨论】:
-
您也必须检查
scanf()的函数返回值(在检查输入的值之前)并删除任何阻止读取的错误输入。例如非数字条目,例如abc,它将保留在输入中,直到您采取措施将其删除。 -
请edit 并显示minimal reproducible example 以及一些样本(如果输入和预期与实际输出)
-
您知道使用
NULL参数调用getIntPositive不会有好的结果吗? -
为什么将指针传递给目标并且也返回值?
标签: c pointers nullpointerexception void-pointers