The idea is to read strings from standard input until EOF is reached (in this format "string - string"). Then, break the string into two strings and and save them to a 2d array. The array is dynamically allocated with initially 2 rows and 20 columns, but I would like to add 2 additional rows every time I want to add next strings to it (the function expandmat()). Here's my code:
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;
}
Also, if there is something in this code that doesnt make any sense, could you please tell me how to fix it?
I know this seems like a trivial task but it has been driving me crazy.
Thanks for your help.
Check out the
reallocC function to resize mat.expandmatshould realloc mat so that you can add two more rows (it should return the matrix as well, because realloc will copy memory to a new location if necessary)