Redian新闻
>
read4 vs read4II 到底啥区别?
avatar
read4 vs read4II 到底啥区别?# JobHunting - 待字闺中
u*u
1
读4
这道题给了我们一个Read4函数,每次可以从一个文件中最多读出4个字符,如果文件中
的字符不足4个字符时,返回准确的当前剩余的字符数。现在让我们实现一个最多能读
取n个字符的函数
int read(char *buf, int n) {
int res = 0;
for (int i = 0; i <= n / 4; ++i) {
int cur = read4(buf + res);
if (cur == 0) break;
res += cur;
}
return min(res, n);
}
读4 II Read N Characters Given Read4的拓展,那道题说read函数只能调用一次,而
这道题说read函数可以调用多次
int read(char *buf, int n) {
for (int i = 0; i < n; ++i) {
if (readPos == writePos) {
writePos = read4(buff);
readPos = 0;
if (writePos == 0) return i;
}
buf[i] = buff[readPos++];
}
return n;
}
不是很清出啊,是说每次call read4(buff), char*buff 都往前挪4个字符长??为啥
“读4”的buff 没有挪动?
谢谢牛人指点迷津。
avatar
b*g
2
举几个例子你就明白了。
Read4:
Buf=“abcdefg”
每个test case只会调用你写的函数一次,比如
read(3), 返回“abc”,这个case 就结束了
read(3), 还是返回“abc”
Read4 II
每个test case可能会调用你写的函数多次
同样的buf
read(3), 返回”abc”,再read(3), 这次要返回“def”
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。