【发布时间】:2014-10-02 16:51:16
【问题描述】:
我有一个用 C 编写的函数,它返回指向值的指针或 null;
char* function (char const *source char const *chars)
{
int size();
int sizeSource = size(source);
int charSource = size(chars);
for (int i = 0; i < sizeSource; i++)
{
for (int j = 0; j < charSource; j++)
{
if (*(source + i) == *(chars + j))
{
return *(source + i);
}
}
}
return "NULL";
}
该函数工作正常,我以这种方式调用它:
printf("%c\n", function("ABCDEFG", "HJI"));
printf("%c\n", function("ABCDEFG", "ABC"));
所以在这里解释一下,第一个 print 语句返回 null,因为 HJI 不在 ABC 中,第二个返回一个指向 A 的指针,这很好。我的问题是,当我当前运行它时,第一个打印语句什么也不打印,如果它返回 NULL,是否有某种方法可以让它打印“NULL”?我宁愿在打印之前不必检查每个返回值是否为 NULL。
编辑:我想在成功和失败案例之间保持一致。如果我在返回指针的成功案例中将 %c 更改为 %s,则会出现分段错误。我也想在函数中返回一些不打印输出的东西。
【问题讨论】:
-
%c但是传入一个指针? -
char* function (char const *a, char const *b)/if (somethings are true)/*(pointer to something)以后请贴出真实代码。 -
您不应将
%c与char *一起使用;它需要char,而不是指针。您的函数最好返回return *(pointer to pointer to something);,否则您将返回一个普通值(或任何东西)。目前,您的功能规范令人困惑,这可能就是您对这一切感到困惑的原因。 -
那么你正在努力实现无法实现的目标。
-
“我有一个用 C 语言编写的函数,它返回 either...” 这就是问题所在。一个函数应该只返回一种类型。