so I've got one program to generate random numbers (for ex. 100 lines, 5 number per line) to .txt file and then the second one reads from the .txt file, loads values into 2D integer array and then prints each line and it's min, max, sum, avg values under them.
My problem is, that if I generate for ex. 100 lines, int .txt file they are all correct, and in for loop while printing them and calculating min max sum avg they are correct, but last ~4 lines have values out of nowhere and it's just random numbers, not from the interval and they dont reflect values in .txt file.
I wonder if you would be able to find something, why's that like that. Thanks
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int maxArr(int array[], int arrayLength);
int minArr(int array[], int arrayLength);
int sumArr(int array[], int arrayLength);
float avgArr(int array[], int arrayLength);
int main() {
FILE *outputFile;
char path[100];
char character;
int numLines = 0;
int space = 0;
do{
printf("\nEnter the file path: ");
scanf("%s", path);
outputFile = fopen(path, "r");
if(outputFile == NULL){
printf("The path doesnt exist. Try again.\n");
}
}while(outputFile == NULL);
while(feof(outputFile) == 0){
character = fgetc(outputFile);
if(character == '\n'){
numLines += 1;
}
}
//terminator line eof
numLines += 1;
fclose(outputFile);
outputFile = fopen(path, "r");
do{
character = fgetc(outputFile);
if(character == ' '){
space += 1;
}
}while(character != '\n');
fclose(outputFile);
printf("numLines = %d || numSpace = %d\n", numLines, space);
outputFile = fopen(path, "r");
int i, j;
int array[numLines + 1][space];
for(i = 0; i < numLines; i++){
for(j = 0; j < space; j++){
character = fgetc(outputFile);
if(character != ' ' && character != '\n'){
fscanf(outputFile, "%d ", &array[i][j]);
}
}
}
i = 0;
j = 0;
int max, min, sum;
float avg;
for(i; i < numLines + 1; i++){
printf("Line [%d]: ", i);
j = 0;
for(j; j < space; j++){
printf("%d ", array[i][j]);
}
min = minArr(array[i], space);
max = maxArr(array[i], space);
sum = sumArr(array[i], space);
avg = avgArr(array[i], space);
printf("\n");
printf("Min: %d | Max: %d | Sum: %d | Avg: %.2f\n", min, max, sum, avg);
printf("\n");
// sleep(1);
}
fclose(outputFile);
return 0;
}
int maxArr(int array[], int arrayLength){
int max = array[0];
int i;
for(i = 1; i < arrayLength; i++){
if(max < array[i]){
max = array[i];
}
}
return max;
}
int minArr(int array[], int arrayLength){
int min = array[0];
int i;
for(i = 1; i < arrayLength; i++){
if(min > array[i]){
min = array[i];
}
}
return min;
}
int sumArr(int array[], int arrayLength){
int sum = 0;
int i;
for(i = 0; i < arrayLength; i++){
sum += array[i];
}
return sum;
}
float avgArr(int array[], int arrayLength){
float avg;
int sum = sumArr(array, arrayLength);
avg = (float)sum / arrayLength;
return avg;
}