У меня есть программа, в которой я должен читать данные, введенные пользователем, чтобы получить список пар данных, например:
1,2 3,4 5,6
или:
1,2
3,4
5,6
4,3
Вот мой код
#include <stdio.h>
#include <stdlib.h>
void swap(int* a, int* b)
{
int t = *a;
*a = *b;
*b = t;
}
int partition(int arr[], int low, int high)
{
int pivot = arr[high]; // pivot
int i = (low - 1); // Index of smaller element
for (int j = low; j <= high - 1; j++)
{
// If current element is smaller than the pivot
if (arr[j] < pivot)
{
i++; // increment index of smaller element
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quickSort(int arr[], int low, int high)
{
if (low < high)
{
/* pi is partitioning index, arr[p] is now
at right place */
int pi = partition(arr, low, high);
// Separately sort elements before
// partition and after partition
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
void printArray(int arr[], int size)
{
int i;
for (i = 0; i < size; ++i)
printf("%d ", arr[i]);
}
int main()
{
int n1, n2;
int x[10] = { 0 };
int y[10] = { 0 };
int capacity = 0;
int n = sizeof(x) / sizeof(x[0]);
for (size_t i = 0; i < n; ++i)
{
scanf_s(" %d , %d [^\n]", &n1, &n2);
x[i] = n1;
y[i] = n2;
}
for (int j = 0; j < n; ++j)
{
printf("%d , %d\n", x[j], y[j]);
}
quickSort(x, 0, n-1);
printArray(x, n);
printf("Minimum is: %d", x[0]);
printf("Maximum is: %d", x[n-1]);
return 0;
}
Однако, когда я пытаюсь передать файл в консоль, запустив команду в CMD: program.exe some.txt
, она выдаст:
-858993460 , -858993460
-858993460 , -858993460
...
Но когда я набираю значения из txt-файла, я получаю правильный вывод.
Можно ли в любом случае разрешить консольной программе C принимать пользовательский ввод и файл .txt?
Мой профессор показал пример использования scanf_s, где он может просто использовать debug.exe и txt-файл для получения ввода, он сказал, что это заставляет программу думать, что она пришла из буфера клавиатуры. Я не совсем понимаю, как это будет работать.
Коды ошибок из CMD:
C: \ Users \ имя пользователя \ Downloads \ Project \ test_files> sort.exe book.txt -> sort.exe
Процесс не может получить доступ к файлу, поскольку он используется другим процессом.
Другая ошибка - красное всплывающее окно, говорящее, что я должен получить Финальную версию (это всплывающее окно с windows).