1

在一个程序中,我必须从输入中扫描

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
}   

所以,我不知道这是否正确。

我会很高兴获得一些帮助和提示..

编辑:

从输入中接收单词时,如果需要,我必须增加内存(行数和每行中的单词),我该怎么做?(重新分配?)

我需要执行以下操作:

图片

4

1 回答 1

1

无需赘述,最简单的方法是使用 Matrix 作为 Linked-Lists 的 Linked-List ..

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
于 2013-06-19T06:11:52.417 回答