Программа отлично компилируется.Я использовал gcc -Wall
, и ошибки не отображались.
Но почему-то функция storeFreqDrift
не выполняется после остальной части кода.Есть идеи почему?Может быть, какая-то проблема с указателями?в конце кода вводится файл (каждый номер находится в новом ряду).Я хочу вернуть значение массива из функции.Пока все отлично работает, но теперь я застрял.
#include <stdio.h>
#include <stdlib.h>
int freqCount;
int calcFreqDrift(const char *file_name, int *result);
int storeFreqDrift(const char *file_name, int tab[freqCount]);
int main() {
int result = 0;
freqCount = calcFreqDrift("numbers.txt", &result);
printf("total number of frequencies is %d", freqCount);
int tab[freqCount];
tab[freqCount] = storeFreqDrift("numbers.txt", &tab[freqCount]);
printf("kolumna nr 3 to %d", tab[3]);
}
int calcFreqDrift(const char *file_name, int *result) {
FILE *file = fopen("numbers.txt", "r");
int i = 0;
int freqCount = 0;
if (file == NULL) {
printf("unable to open file %s", file_name);
}
while (fscanf(file, "%d", &i) == 1) {
freqCount++;
printf ("%d\n ", i);
*result += i;
printf("\n we are at row nr. %d sum of this number and all numbers before is: %d\n", freqCount, *result);
}
fclose(file);
return freqCount;
}
int storeFreqDrift(const char *file_name, int tab[freqCount]) {
for (int i = 0; i < freqCount; i++) {
tab[i] = 5 + tab[i - 1];
}
return tab[freqCount];
}
numbers.txt :
-14
+15
+9
+19
+18
+14
+14
-18
+15
+4
-18
-20
-2
+17
+16
-7
-3
+5
+1
-5
-11
-1
-6
-20
+1
+1
+4
+18
+5
-20
-10
+18
+5
-4
-5
-18
+9
+6
+1
-19
+13
+10
-22
-11
-14
-17
-10
-1