本文转载自 : https://blog.youkuaiyun.com/xinqrs01/article/details/54093704
The API: int read4(char *buf) reads 4 characters at a time from a file.
The return value is the actual number of characters read. For example, it returns 3 if there is only 3 characters left in the file.
By using the read4 API, implement the function int read(char *buf, int n) that reads n characters from the file.
Note:
The read function will only be called once for each test case.
思路:
1. 用read4读,读一次,修改一次指针,让buf指向下一个4字节开始
2. 关键是:要求读n个,file总长度可能大于等于n,或者小于n。当file总长度小于n,则返回实际读出的长度!
int read4(char *buf);
class Solution {
public:
int read(char *buf, int n){
int total=0; cur=0;
while(cur==4&&total<n){
cur=read4(buf);
buf=buf+cur;
total+=cur;
}
return min(total+cur,n);
}
};
或者:
class Solution {
public:
int read(char *buf, int n){
int total=0;
for(int i=0;i<=n/4;i++){
int cur=read4(buf+total);
if(cur==0) break;
total+=cur;
}
return min(total,n);
}
};