zoukankan      html  css  js  c++  java
  • leetcode[157] Read N Characters Given Read4

    题目意思是给你一个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] = '';
                cnt = n;
            }
            return cnt;
        }
    };

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

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

    顺便提下,memcpy在<string.h>头文件里,是c的,应该可以用strncpy代替

  • 相关阅读:
    <span>和<div>标签的隐藏和显示切换
    重启svn
    Mac下配置apache
    iOS时间显示今天昨天
    关于UIPageViewController那些事
    关于plist文件的那些事
    Xcode调试LLDB
    Reveal安装
    静态初始化器
    Static简介
  • 原文地址:https://www.cnblogs.com/higerzhang/p/4183652.html
Copyright © 2011-2022 走看看