将数组传递给已扫描的函数

时间:2017-11-15 16:26:14

标签: c arrays function

我正在努力将以前扫描过的数组数据发送到函数中。

#include <stdio.h>
#include <stdlib.h>

int display(int a[21]);

int main(){
    int i;
    int a[21];
    FILE*fpointer;
    fpointer=fopen("data.txt","r");
    if (fpointer==NULL){
        printf("\nFile could not be found.");
        exit(1);
    }
    else{
        for (i=0;i<21;i++){
            fscanf(fpointer, "%d",&a[i]);   
        }
        fclose(fpointer);
    }
    display(int a[21]);
    return 0;
}

int display(int a[21]){
    int i;
    for (i=0;i<21;i++){
        printf("%d\n",a[i]);
    }
    return 0;
}

我想使用display()函数显示data.txt中的每个值。我能够fscanf每一个进入数组,我只是似乎无法将数组发送到函数。

data.txt中:

1
6
4
7
3
4
12
14
15
-17
-19
21
-23
0
37
0
-31
32
34
-37
-39

输出值:

1065353216
1086324736
1082130432
1088421888
1077936128
1082130432
1094713344
1096810496
1097859072
-1048051712
-1047003136
1101529088
-1044905984
0
1108606976
0
-1040711680
1107296256
1107820544
-1038876672
-1038352384

2 个答案:

答案 0 :(得分:4)

main结束时,这不是函数调用:

        …
    }
    display(int a[21]);
    return 0;
}

因为包含了参数的类型,所以这被认为是声明(没有返回类型,因此隐式int)。要调用函数,只需传递所需的参数:

display(a);

答案 1 :(得分:0)

#include <stdio.h>
#include <stdlib.h>

int display(int a[21]);

int main(){
    int i;
    int a[21];
    FILE*fpointer;
    fpointer=fopen("data.txt","r");
    if (fpointer==NULL){
        printf("\nFile could not be found.");
        exit(1);}

    else{
        for (i=0;i<21;i++){
        fscanf(fpointer, "%d",&a[i]);}  

        fclose(fpointer);}
        display(a);
return 0;
}
int display(int a[21]){
    int i;
    for (i=0;i<21;i++){
      printf("%d\n",a[i]);}
return 0;
}

现在显示结果。我正在扫描%f而不是%d,也是主函数中的显示(a)而不是显示(int a [])