我如何错误地使用void表达式?

时间:2018-06-20 04:33:45

标签: c function void

我是C语言的新手,想创建一个函数来接收一个整数{'b': [2, 2], 'c': [1, 0], 'd': [1, 1]} 和一个数组n,并检查我的数组是否包含V到{{ 1}}。

这是我的实际代码:

1

我在printf上遇到错误,它表示无效使用了void表达式。

3 个答案:

答案 0 :(得分:2)

您的checkArray()函数不返回任何内容(这就是void的意思),并且您试图打印出“什么都没有”这显然是不可能的。您的checkArray()函数已经可以打印结果了,因此您不需要在main()中打印任何内容。

似乎您在else之前缺少printf("Not Latin"),并且您的length变量也不正确。 V函数的checkArray()参数只是数组的指针(如引用),它不包含任何大小信息,如果需要,您必须将大小分别传递给函数才能正确遍历数组。

答案 1 :(得分:0)

在我看来,您的程序有两个错误。 1.您没有在函数定义中添加“ else”条件。 2.您已经在函数定义中打印了一些内容,因此无需在main()函数中使用'printf'。 您只需调用该函数即可。 并输入“ return 0;”在主要功能的最后。

答案 2 :(得分:0)

放在一起:

 #include <stdio.h>

void checkArray(int n, int* V, size_t length);

void checkArray(int n, int* V, size_t length){
    int remain = n;

    for(int i = 0; i<length;i++){
        for(int j = 0; j<length;j++){
            if(V[j] == remain){
                remain--;
            }
        }
    }
    if(remain == 0){
        printf("It's Latin");
    else {
        printf("Not Latin");
    }
}

int main(){
    int n;
    size_t length;

    scanf("%d", &n);
    int V[] = {1,2,3,4,5,6,7,8};
    length = sizeof(V) / sizeof(V[0]);

    checkArray(n, V, length);
    return 0;
}