1

アイデアは、EOF に達するまで (この形式で"string - string") 標準入力から文字列を読み取ることです。次に、文字列を 2 つの文字列に分割し、2 次元配列に保存します。配列は、最初は 2 行 20 列で動的に割り当てられますが、次の文字列を追加するたびに 2 行追加したいと思います (関数expandmat())。これが私のコードです:

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;
}

また、このコードに意味をなさない箇所があれば、それを修正する方法を教えていただけますか?

これは些細な作業のように思えますが、私は頭がおかしくなりました。

ご協力いただきありがとうございます。

4

2 に答える 2

0

reallocマットのサイズを変更する C 関数を 確認してください。

expandmatさらに2行を追加できるようにマットを再割り当てする必要があります(再割り当ては必要に応じてメモリを新しい場所にコピーするため、マトリックスも返す必要があります)

于 2011-02-05T22:43:05.507 に答える
0

うわー...このような質問が今日出てくるのは3回目です:-)。

ここでの私の答えが役立つかどうかを確認してください: C 構造体の配列

于 2011-02-05T22:46:39.347 に答える