stringtable char* data [500] にさまざまな文字列へのポインターを入力しています。
char* data [500];
int stringC = 0;
char PrintBuffer[200];
void data_display(void);
void printStringTable(void);
int main() {
data_display(); //fill buffer
printStringTable();
return 0;
}
ここでは、別のバッファを使用して、文字列にインデックスを格納できるようにします。
void data_display(void)
{
int index =0;
sprintf(PrintBuffer,"A Text %d\n", index);
output(PrintBuffer);
index ++;
sprintf(PrintBuffer,"B Text %d\n",index);
output(PrintBuffer);
index ++;
sprintf(PrintBuffer,"C Text %d\n",index);
output(PrintBuffer);
}
デバッグ時に、ポインターが常に同じアドレスを指していることがわかります。
void output(char* Buffer)
{
data[stringC]= Buffer;
char*(*ptr)[500] = &data;
stringC++;
ptr+=stringC;
}
void printStringTable()
{
int i;
for (i = 0; i < 3; i++) {
printf(data[i]);
}
}
別のバッファー (PrintBuffer) を使用せずに純粋な文字列がある場合、すべてのポインターが別のアドレスを指し、次のようになります。
A テキスト 0 B テキスト 1 C テキスト 2
しかし、この星座では次のようになります。
C テキスト 2 C テキスト 2 C テキスト 2
別のアドレスを指すようにポインタをインクリメントする方法はありますか?