Идея состоит в том, чтобы читать строки со стандартного ввода до тех пор, пока не будет достигнута EOF (в этом формате "string - string"
). Затем разделите строку на две строки и сохраните их в 2d-массиве. Массив динамически выделяется изначально 2 строками и 20 столбцами, но я хотел бы добавить 2 дополнительных строки каждый раз, когда я хочу добавить к нему следующие строки (функция). Вот мой код:C сохранение строк в 2-й массив
char ** alloc(int rows, int collums) {
char ** mat;
int i;
mat = malloc(sizeof (char *) * rows);
for (i = 0; i < rows; i++) {
mat[i] = malloc(sizeof (char) * collums);
}
return mat;
}
char ** addtoarray(char ** mat, char * string1, char * string2, int position) {
sscanf(string1, "%s", mat[positon]);
sscanf(string2, "%s", mat[positon+1]);
return mat;
}
char ** getinput(char * longstring, char * string1, char * string2) {
int position = 0, n = 2, max = 30;
char ** mat;
mat = alloc(n, max);
while (fgets(longstring, max, stdin)) {
sscanf(longstring, "%s - %s", string1, string2);
addtoarray(mat, string1, string2, positon);
n += 2;
position += 2;
mat = expandmat(mat, n);
}
return mat;
}
Кроме того, если есть что-то в этом коде, который не делает никакого смысла, не могли бы вы сказать мне, как это исправить?
Я знаю, что это кажется тривиальной задачей, но это сводило меня с ума.
Благодарим за помощь.
Прости меня за этот комментарий, но это именно причина, почему я предпочитаю более высокий уровень сестры-языки, такие как Java или C# более простого C. Это так легко писать в HLL. (Спасибо библиотекам.) –