複数文字列の受け渡し

charの2次元配列

一つの文字列は1次元配列である。それを複数まとめたものは2次元配列となる。

最大50文字分の文字列領域を100個格納できるchar型2次元配列は

 char str[100][50];

となる。このような配列を別の関数に引数として渡すには以下のように 授受すればよい。

/* 渡す側の記述 */
int main()
{
  int strproc(char[][], int); /* プロトタイプ宣言 */
  char str[100][50];
  int n=0;
    :
    :
  /* str[*] に値を設定する処理 */
  /* 個数が n に入っているものと仮定する */
  strproc(str, n);
    :
    :
}

/* もらう側の関数 */
int strproc(char x[][50], int n)
{
  /* 変数nに実際に入っている文字列の個数を入れてもらう */
}

複数の文字列を受け渡す例

標準入力から複数の文字列(最大50バイト)を読み込み、 それを別の関数で出力するだけのプログラムを見本として以下に示す。

strarray.c

#include <stdio.h>

int main()
{
  char str[100][50];
  int num=0;
  int strproc(char[][], int);   /* プロトタイプ宣言 */
  while (fgets(str[num], sizeof str[num], stdin)) {
    num++;
  }
  printf("n=%d\n", num);
  strproc(str, num);
}

int strproc(char x[][50], int n)
{
  int i;
  for (i=0; i<n; i++) {
    printf("%d = %s", i, x[i]);
  }
}

目次