C言語関係掲示板

過去ログ

No815 配列の拡張

[戻る] [ホームページ]
No.10322

ポインタ配列の拡張
投稿者---TOSHIB(2003/11/06 15:00:54)


ポインタ配列を以下のように宣言し前の情報は保持したまま拡張したい
のですが、どのようにしたらよいですか?

char *array[1];
char a[10] ="QAAAA";

array[1] = a;

*array[3]のように*array[1]に入ってるアドレスは保持したままに拡張したいのですが。

No.10325

Re:ポインタ配列の拡張
投稿者---たか(2003/11/06 16:30:41)


>ポインタ配列を以下のように宣言し前の情報は保持したまま拡張したい
>のですが、どのようにしたらよいですか?

realloc()でしょうね。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
  char **array;
  int i;
  
  /* arrayをchar型のポインタを1つだけ入れられる配列にする */
  if ((array = (char **)malloc(sizeof(char *))) == NULL) exit(1);
  array[0] = "QAAAAA";
  puts(array[0]);
  
  /* arrayをchar型のポインタを3つ入れられる配列にする */
  if ((array = (char **)realloc(array, sizeof(char *) * 3)) == NULL) exit(1);
  array[1] = "QBBBBB";
  array[2] = "QCCCCC";
  
  for (i = 0; i < 3; i++) puts(array[i]);
  free(array);
  
  return 0;
}


No.10327

Re:ポインタ配列の拡張
投稿者---TOSHIB(2003/11/06 17:36:50)


ありがとうございました。
使わせていただきます。