動的に生成した文字列の配列を返す関数について
動的に生成した文字列の配列を返す関数について
お世話になります。
動的に文字列の配列を生成する関数を作ったのですが、
配列をうまく受け渡すことができず困っています。
以下のように入力された件数の数だけ
"abc 0"~"abc n"という文字列を生成を行っています。
関数自体は期待通りの動作をしているようなのですが、
(Test1関数の最後でbfを確認しました)
呼び出し側にうまく配列を渡すことができません。
以下にソースを掲載いたしますのでどなたかご教示いただけたらと思います。
環境はVisualStudio2005です。
よろしくお願いします。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Test1(char **bf, int *cnt)
{
int i;
int kensu;
int charlength;
char num[10];
char **nm1 = NULL;
char **nm2 = NULL;
printf("件数を入力:");
scanf("%d",&kensu);
for(i=0; i < kensu; i++)
{
nm2 = (char**)realloc(nm1, sizeof(char*) * (i + 1));
nm1 = nm2;
charlength=128;
nm1[i] = (char*)malloc(sizeof(char) * (charlength));
strcpy(nm1[i], "abc ");
itoa(i, num, 10);
strcat(nm1[i], num);
}
bf = nm1;
*cnt = i;
return ;
}
void main()
{
int cnt;
char **bf = NULL;
Test1(bf, &cnt);
printf("START\n");
printf("全部で%d件。\n", cnt);
for(int i=0;i < cnt;i++)
{
printf("%s\n",bf[i]);
}
free(bf);
printf("END\n");
}