多看阅读器很流氓啊# PDA - 掌中宝
A*e
1 楼
不停从source读,向target写。直到source里剩下不到4个,或者target里剩下不到4个
为止。然后判断是没读的少,还是没写的少,取最小值再读写一下。
class Solution {
public:
int read(char* buf, int n) {
int total_bytes = 0;
int bytes = 0;
char tmp[4];
while ((bytes = read4(tmp) == 4 && total_bytes <= n - 4) {
memcpy(buf, tmp, bytes);
total_bytes += bytes;
buf += bytes;
}
int remain_bytes = min(bytes, n - total_bytes);
memcpy(buf, tmp, remain_bytes);
return total_bytes + remain_bytes;
}
};
为止。然后判断是没读的少,还是没写的少,取最小值再读写一下。
class Solution {
public:
int read(char* buf, int n) {
int total_bytes = 0;
int bytes = 0;
char tmp[4];
while ((bytes = read4(tmp) == 4 && total_bytes <= n - 4) {
memcpy(buf, tmp, bytes);
total_bytes += bytes;
buf += bytes;
}
int remain_bytes = min(bytes, n - total_bytes);
memcpy(buf, tmp, remain_bytes);
return total_bytes + remain_bytes;
}
};