题目描述
给你一个文件,并且该文件只能通过给定的 read4 方法来读取,请实现一个方法使其能够读取 n 个字符。返回值为实际读取的字符个数。
示例:
输入: file = "abc", n = 4
输出: 3
解释: 当执行你的 rand 方法后,buf 需要包含 "abc"。 文件一共 3 个字符,因此返回 3。
注意 "abc" 是文件的内容,不是 buf 的内容,buf 是你需要写入结果的目标缓存区。
参考代码
/** buf是一个指针,每次读取不能覆盖原来的地方,需要偏移4,
然后如果可读的内容比n小,要返回读取的值,反之返回n原先的值
**/
// Forward declaration of the read4 API.
int read4(char *buf);
class Solution {
public:
/**
* @param buf Destination buffer
* @param n Number of characters to read
* @return The number of actual characters read
*/
int read(char *buf, int n) {
int cnt = 0, res = 0, tmp = n;
while (tmp > 0) {
res += read4(buf + (cnt++ * 4));
tmp -= 4;
}
return res < n ? res: n;
}
};