C 程序不打印出值

C program doesn't print out the values

我有一个程序正在寻找总数以及链表中的中间数字是多少。我的问题是为什么它不打印出值?

代码如下:

int count(list values){
    if(values == NULL)
        return 0;
    else
        return 1 + count(values->next);
}

void middle(struct node *head){
    int count = 0;
    struct node *mid = head;

    while (head != NULL){
        if(count & 1)
            mid = mid->next;

        count++;
        head = head->next;
    }
}

void traverse(list values){
     if(values->next)
     printf("\n# of the values: %.1f% \nMiddle: %.1f%\n", count, middle);
}

int main(int argc, char *argv[]){
    FILE *input = stdin;

    list values = readNumbers(input);
    traverse(values);
    return 0;
}
printf("\n# of the values: %.1f% \nMiddle: %.1f%\n", count, middle);

count 应该接收一个参数 (list )。编译器会将不带参数的 countmiddle 视为函数指针。

另请注意,middle 是一个 void 函数,那么您究竟希望它打印什么?

很难知道从哪里开始。我真的不知道你想做什么。

但是让我们看看这一行:

printf("\n# of the values: %.1f% \nMiddle: %.1f%\n", count, middle);

countmiddle 是函数,但您不会在此处调用这些函数。您只是将这些函数的地址传递给 printf(),它不知道这些是函数。您需要在函数名称后加上括号(count(args)middle(args) 才能调用这些函数。