私は初心者で、ポインターが指す文字列でいっぱいのページのような大きな文字列をバッファーに入れる方法を知る必要があります。たとえば、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_t
Windows など)。
もありますstrcpy
がp->helpPage
、あなたよりも多くのデータが含まれてbuffer
いると、バッファオーバーフローが発生します
strcpy()
ポインタp->helpPage
をバッファにコピーするために使用できますbuffer
:
strcpy(buffer, p->helpPage);