《C陷阱与缺陷》第48页的一个函数的疑问
有书的可以翻到该页,我就不客气了,直接说了哈:
先上代码
#include <iostream>using namespace std;#define N 10static char buffer[N];static char *bufptr = buffer;void bufwrite(char *p, int n){ while (n > 0) { int k, rem; if (bufptr == &buffer[N]) { return; //源代码是fulshbuffer();刷新缓冲区,我直接返回了 } rem = N - (bufptr - buffer); k = n > rem ? rem : n; //k的值代表可转移的字符数最大值,取值为缓冲区剩余空间(rem)和输入数据中剩余的字符数中的较小者 memcpy(bufptr, p, k); bufptr += k; p += k; //这行代码去掉感觉没影响 n -= k; }}int main(){ char cBuf[] = "abcdefghij"; bufwrite(cBuf, 12); for (int i = 0; i < N; i++) { cout<<buffer[i]; } cout<<endl; return 1;}