注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
小弟 lc157 read4 一直无法做对。 也找不到自己解法的错误之处,请各位大侠指正啊
int read4(char *buf);
// key : what does "read4" return ??
// 1 : read4() < 4, reach end of file
// 2 : read4() == 4 a: ok to continue; b: last 4 bye of file
class Solution {
public:
/**
* @param buf Destination buffer
* @param n Maximum number of characters to read
* @return The number of characters read
*/
int read(char *buf, int n) {
// n L requesting buffer count
// tmp: actual number read for single read4
// actualRead: actual number read for us on each read4,
// readLen: total actual number read for us
int tmp = 0, actualRead = 0, readLen = 0;
char buffer[4];
while (n > 0) {
tmp = read4(buffer);
// make sure file size and requesting size can satisfy each other.
// n <= tmp
// tmp < n
actualRead = min(tmp, n);
readLen += actualRead;
//append buffer to buf
strncat(buf, buffer, actualRead);
if (actualRead < 4) break;
n -= actualRead;
}
return readLen;
}
};
|