|
こんばんは。たぶん意図するコードは次のようになると思います。エラー処理など手抜きなのでそのつもりで。
void tStrcopy( SearchStruct **pp )の引数がSearchStruct**になっているのが間違いの元だと思います。これがSearchStruct*ならポインタが一つ浅くなってすっきりします。p->memberは(*p).memberの構文糖なので
(*SearchData)[0].valueはSearchData[0]->valueとは書けません。
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char value[256];
} SearchStruct;
void tStrcopy(SearchStruct **pp);
int main( void )
{
SearchStruct *p;
tStrcopy(&p);
printf( "SearchData[0] = %s\n", p[0].value );
printf( "SearchData[1] = %s\n", p[1].value );
free(p);
return 0;
}
void tStrcopy( SearchStruct **SearchData )
{
*SearchData = malloc(4 * sizeof(SearchStruct));
strcpy((*SearchData)[0].value, "第一パラメタ");
strcpy((*SearchData)[1].value , "");
strcpy((*SearchData)[2].value, "第二パラメタ");
strcpy((*SearchData)[3].value, "第三パラメタ" );
printf( "SearchData[0] = %s\n", (*SearchData)[0].value );
printf( "SearchData[1] = %s\n", (*SearchData)[1].value );
printf( "SearchData[2] = %s\n", (*SearchData)[2].value );
printf( "SearchData[3] = %s\n", (*SearchData)[3].value );
}
|