2016-02-11 2 views
-4

я получаю выход 100, когда я делаю то, что все остальные в Интернете уже отправлял о:Подсчет числа элементов в массиве в C

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

+4

'readNumbers()' никогда не вызывается в коде, который вы указали. И ваша строка формата в 'fscanf()' отсутствует скобка. –

+2

Данный код даже не компилируется. Пожалуйста, укажите * точный * код. –

+1

Хороший вопрос состоит из четырех частей. 1. Что вы сделали. 2. Какой результат вы получите от этого. 3. Что вы ожидали, что выход будет 4. Почему вы ожидали, что результат будет другим. –

ответ

3

В отличие от массивов в других языках (что может увеличиваться и уменьшаться, и покажет вам, сколько элементов в настоящее время содержит массив), массив C - это просто блок памяти с фиксированным размером. Вы объявили массив, который может содержать 100 элементов, и это все, что вам скажет sizeof.

Если вы хотите узнать, сколько чисел вы положили в массив, вам необходимо отслеживать это в отдельной переменной. Сам массив не содержит эту информацию.

Смежные вопросы