-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';

在上面的调用中,strncpy只要求复制 499 个字符,以确保buffer为空终止。它还处理超过一个字节的字符(例如wchar_t在 Windows 上)。

也有strcpy,但是如果p->helpPage里面的数据比你的多buffer,就会导致缓冲区溢出

于 2013-10-10T06:00:33.983 回答
0

一个页面可以被认为是一个指针数组,其中每个指针指向每一行或句子。因此,如果您想复制特定的行或句子,则可以使用 strncpy(buff, p->helpPage, n); 如果您知道每行的大小,或者您可以获得一个字符并将该字符复制到另一个缓冲区,直到您得到一个换行符或一个点。

于 2013-10-10T06:05:40.033 回答
-1

您可以使用strcpy()将指针复制p->helpPage到缓冲区buffer

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