{{1}}
尝试反转整数值以及符号的变化,并在数字中找到数字的出现。
基本上我猜我的指针做错了。 任何人都可以帮助我弄清楚我哪里出错了?
答案 0 :(得分:4)
您永远不会在result
中初始化main()
而您永远不会从myCount()
返回任何内容。
只需在main()
result = myCount();
请记得检查NULL
。
并在myCount()
struct Result * myCount(int n, int d)
{
struct Result *result;
int rev_dig;
int last_dig;
int digit;
int count;
count = 0;
result = malloc(sizeof (struct Result));
if (result == NULL)
return NULL; /* handle the error in the caller function */
while (n != 0)
{
last_dig = n % 10;
rev_dig = rev_dig * 10 + last_dig;
n = n / 10;
}
rev_dig = rev_dig * (-1);
result->reversen = rev_dig;
while (n >= 1)
{
digit = n % 10;
if (digit == d)
count++;
n = n / 10;
}
result->count = count;
return result;
}
修正:
如果NULL
失败,则返回malloc()
,模仿malloc()
的行为。返回指向新分配的内存的指针的函数通常会这样做,例如strdup()
。
删除了malloc()
。
在某个时候退回result
。
不从声明为返回内容的函数返回值未定义行为。
答案 1 :(得分:1)
您正在尝试访问从未初始化的结构指针。