Необходимо прочитать неопределенное количество целых чисел из стандартного ввода в массив
Поэтому я пишу учебную программу, которая будет принимать целые числа в качестве входных данных из stdin, загружать их в массив, сортировать массив и затем выводить результаты.
Я изо всех сил пытался выяснить, как работает IO в Си. Вот что у меня есть, пожалуйста, дайте мне знать, если вы видите какие-либо вопросы / есть какие-либо предложения. В идеале я хотел бы избежать использования буфера, но я не могу найти другой способ, позволяющий вводить данные переменного размера
Формат ввода: "10 20 30 11 666 1 235" ... и т. Д.
// check if an input file is specified
// If one is specified, then sort those numbers, otherwise pull from stdin
if(inputFile == "stdin"){
// Load stdin into a buffer
char buffer[100];
if(fgets(buffer, sizeof(buffer), stdin) == NULL) {
Handle_EOForIOError();
}
// Get a count of the numbers to create the array
int numIntegers = 0;
int num;
while(sscanf(&buffer[0], "%d ", &num) == 1){
numIntegers++;
}
// Initialize the array with the proper size
numbers = (int*)malloc(numIntegers*sizeof(int));
// Load the integers into the array
int i = 0;
while(sscanf(&buffer[0], "%d ", &numbers[i]) == 1){
i++;
}
}