私は初心者で、ポインターが指す文字列でいっぱいのページのような大きな文字列をバッファーに入れる方法を知る必要があります。たとえば、pointer p->helpPage
ヘルプ ページのコンテンツ全体をchar buffer[500]
助けてください。
あなたがしたいstrncpy。
const char *src = "Some string";
const int BUF_SIZE = 64;
char buf[BUF_SIZE];
strncpy(buf, src, sizeof buf);
buf[BUF_SIZE-1] = '\0';
strncpyは、 とは異なりstrcpy、追加のパラメーターを取ります。提供されたバッファのサイズ。これは、バッファ オーバーフローに対処するのに役立ちます。
strncpyを使用できます。例えば
int size = sizeof(buffer)/sizeof(buffer[0]);
strncpy(buffer, p->helpPage, size);
buffer[size-1] = '\0';
上記の呼び出しでは、が null で終了strncpyすることを保証する 499 文字のみをコピーするよう求められます。bufferまた、1 バイトを超える文字も処理します ( wchar_tWindows など)。
もありますstrcpyがp->helpPage、あなたよりも多くのデータが含まれてbufferいると、バッファオーバーフローが発生します
strcpy()ポインタp->helpPageをバッファにコピーするために使用できますbuffer:
strcpy(buffer, p->helpPage);