码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode[157] Read N Characters Given Read4

时间:2014-12-24 23:59:54      阅读:439      评论:0      收藏:0      [点我收藏+]

标签:

题目意思是给你一个read4的函数,实现一个readn的函数。

一开始题目一直没搞懂,原来,read4(buf) 是指,读4个字符存到buf,或者读剩下的不足四个的字符,返回的数字是存到buf里的字符数。

没有买书,只能网上看看别人分享的代码:

// Forward declaration of the read4 API.
int read4(char *buf);

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) {
        char buffer[5];
        int cnt = 0;
        while (cnt < n) {
            int sz = read4(buffer);
            memcpy(buf + cnt, buffer, sz);
            cnt += sz;
            if (sz < 4) break;
        }
        if (cnt > n) {
            buf[n] = \0;
            cnt = n;
        }
        return cnt;
    }
};

需要注意的是,跳出while后,需要判断读的数字是不是超过n了,因为我们只实现readn,要返回的数字最多就是n,存到buf里的也最多是n个字符。

所以如果cnt大于n了,那么buf里面就要将buf[n]设置为末尾也就是‘\0’

 

leetcode[157] Read N Characters Given Read4

标签:

原文地址:http://www.cnblogs.com/higerzhang/p/4183652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!