在程序中,我必须从输入中扫描
scanf("%s",currWord);
一个未定义数量的单词,它们以非定义的行数出现。
我想将这些单词放在二维字符串数组中。
字符串的长度是固定的[MAX_WORD_LEN+1]
我的想法是:
int row=10 //10 lines for starting
int col=5 //5 words in each line for starting
int i;
typedef char word[MAX_WORD_LEN+1]; //new type of 11char lenght string
word** matrix; //2 dimensional array (pointers) with no memory
matrix = malloc(row*sizeof(word*)); //allocate row number of word* (word pointer) size
for(i=0;i<row;i++)
{
matrix[i] = malloc(col*sizeof(word)); //allocate col number of words to each row
}
所以,我不知道这是不对的。
我会很高兴得到一些帮助和提示..
修改
当从输入接收单词时,如果需要,我必须增加内存(每行中的行数和单词数),我该怎么做? (realloc?)
我需要做以下事情:
答案 0 :(得分:1)
没有详细说明,最简单的方法是使用Matrix作为链接列表的链接列表..
struct matrix_field
{
char data [11];
matrix_field * next_field;
};
struct matrix_row
{
matrix_field * first_field;
matrix_row * next_row;
};
struct matrix
{
matrix_node * first_row;
};
您的数据在内存中将如下所示..
[+]
|
v
[x]-->[a]-->[b]-->[c]-->
|
v
[y]-->[d]-->[e]-->[f]-->
|
v
[z]-->[g]-->[h]-->[i]-->
|
v
---------------
[+] matrix
[x] .. [z] matrix_row
[a] .. [i] matrix_field