-2

私は初心者で、ポインターが指す文字列でいっぱいのページのような大きな文字列をバッファーに入れる方法を知る必要があります。たとえば、pointer p->helpPage ヘルプ ページのコンテンツ全体をchar buffer[500]

助けてください。

4

4 に答える 4

1

あなたがしたい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、追加のパラメーターを取ります。提供されたバッファのサイズ。これは、バッファ オーバーフローに対処するのに役立ちます。

于 2013-10-10T06:02:19.000 に答える
1

strncpyを使用できます。例えば

int size = sizeof(buffer)/sizeof(buffer[0]);
strncpy(buffer, p->helpPage, size);
buffer[size-1] = '\0';

上記の呼び出しでは、が null で終了strncpyすることを保証する 499 文字のみをコピーするよう求められます。bufferまた、1 バイトを超える文字も処理します ( wchar_tWindows など)。

もありますstrcpyp->helpPage、あなたよりも多くのデータが含まれてbufferいると、バッファオーバーフローが発生します

于 2013-10-10T06:00:33.983 に答える
-1

strcpy()ポインタp->helpPageをバッファにコピーするために使用できますbuffer

strcpy(buffer, p->helpPage);
于 2013-10-10T06:00:15.247 に答える