计算C中数组中的项目数

Counting number of items in an array in C

当我执行其他人在线发布的内容时,我不断收到 100 的输出:

int total = sizeof(num)/sizeof(int);

它似乎对我不起作用。这是我的代码:

int main() {
    static int num[100];
    int totalNum = sizeof(num)/sizeof(int);
    return 0;
}

void readNumbers(int* num) {
    int i = 0;
    FILE *fp;
    fp = fopen("/Users/Documents/hello.txt", "r");
    if (fp == NULL) {
        printf("Could not load file");
        exit(0);
    }
    /* Loads numbers into num array */
    int number;
    while(fscanf(fp, "%d", &number) > 0) {
        num[i] = number;
        i++;
    }
}

我的输出是 100,所以我假设没有任何东西被插入到 num 数组中?如果我打印出 sizeof(num) 它会给我一百; 4 字节 * 100 = 400。

这是 hello.txt 中的内容:

14 21 39 48 109 3882

与其他语言中的数组(可以增长和收缩,并会告诉您数组当前包含多少元素)不同,C 数组只是一个具有固定大小的简单内存块。您声明了一个可以容纳 100 个元素的数组,这就是 sizeof 要告诉您的全部内容。

如果您想知道在数组中放入了多少个数字,则必须在单独的变量中跟踪它。数组本身不包含该信息。