3

主に:

char *myData[500][9]; //dynamic rows??
char **tableData[500]={NULL};         //dynamic rows??
int r;

newCallBack(db, &myData, &tableData, &r);

次の方法で関数に渡します。

void newCallBack(sqlite3 *db, char** mdat, char*** tdat, int* r )
{

これが気に入らないようですか?助言がありますか?サイズがわからないときはオンラインでたくさんの例を試してみてください....

ありがとう。

4

2 に答える 2

3

まず、myData の問題は、型が間違っていることです。char* [][] は、呼び出している関数にプロトタイプ char*** (文字列の 2 次元配列) を必要とします。この関数は、文字列のサイズを制限することを気にしない場合は、char* [] または char[][] である文字列のリストを必要とします。

完全に動的な配列サイズを取得するには、malloc() と free() を使用して手動でメモリを割り当て (そして解放!)、変数の型を char **myData と char ***tableData に変更する必要があります。

于 2009-02-09T17:43:50.813 に答える