Я хочу заполнить динамический массив числами из командной строки. Если есть 2 аргумента командной строки, он откроет файл и прочитает данные, но если есть только один, он примет пользовательский ввод. Этот код работает, когда argc == 1, но не работает, если есть два аргумента. Я не могу понять ошибку, но был бы очень признателен за помощь. Спасибо.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
#include <stdlib.h>
#include <errno.h>
int main(int argc, char* argv[]) {
FILE* input = NULL;
double num;
//pointer to double
//will expand if necessary
double* numArray = NULL;
size_t arraySize = 0;
size_t arrayCount = 0;
if (argc == 1) {
input = stdin;
puts("Enter white-space separated real numbers. Terminate input with ^Z");
}
if (argc == 2) {
input = fopen(argv[1], "rb");
if(input = NULL) {
printf("Cannot open file: <%s>", argv[1]);
perror(" ");
exit(1);
}
}
while (fscanf_s(input, "%lf", &num) == 1) {
if (arrayCount >= arraySize) {
size_t newSize = arraySize ? arraySize * 2 : 32;
double *newArray = realloc(numArray, newSize * sizeof(double));
if (newArray == NULL) {
printf("Out of memory for %zu elements\n", newSize);
perror(" ");
exit(1);
}
numArray = newArray;
arraySize = newSize;
}
/*if (res != EOF ) {
printf("Invalid input for element: %zu", arrayCount);
perror(" ");
exit(1);
}*/
numArray[arrayCount++] = num;
}
//print out elements
for (size_t i = 0; i < arrayCount; ++i)
printf("%.2lf, ", numArray[i]);
free(numArray);
fclose(input);
}