Мой фон - java, поэтому я еще не привык к синтаксису c.
Мне нужно сделать следующее: позволить пользователю ввести число k
(количество строк) и после вставитьзначения в массив 2d с этой формой:
1 2
3 4
5 6
т.е. два значения с пробелом между ними и затем новая строка для новой строки.Если пользователь ввел k=1000
, но ввел только 4
строк, то вызов функции был бы только для массива с 4 строками, а не 100. Цикл, который считывает значения, должен остановиться, если: есть k строк или Достигнув EOF
Мои вопросы:
- Я не знаю, как реализовать часть EOF.
- Я не знаю, как реализовать это для k = 1000 и там только 4 строки, поэтому вызываем функцию с массивом, который содержит только 4 строки
Вот мой код:
#include <stdio.h>
#define COLS 2
void foo(int** rows, int n);
int main()
{
int k;
printf("Please enter number of rows\n");
scanf_s("%d", &k);
int** matrix = (int**)malloc(k * sizeof(int*));
for (int i = 0; i < k; i++)
matrix[i] = (int*)malloc(COLS * sizeof(int));
int num1, num2;
for (int i = 0; i < k||num1!=EOF; i++)
{
printf("Enter two numbers separated by space \n");
scanf_s("%d %d", &num1, &num2);
matrix[i][0]=num1;
matrix[i][1] = num2;
}
printf("The array:: \n");
for (int i = 0; i < k; i++)
{
for (int j = 0; j < COLS; j++)
{
printf("%d \t",matrix[i][j]);
}
printf("\n");
}
foo(matrix, k);
for (int i = 0; i < k; i++)
{
free(matrix[i]);
}
free(matrix);
return 0;
}
void foo(int** rows, int n)
{
//some stuff
}