初学者有关问题 驱动中copy_to_user有关问题

菜鸟问题 驱动中copy_to_user问题
在驱动里面我需要讲一个char *buf[24]拷贝出来 使应用程序可以read copy_to_usr()应该怎么写呢?
c语言指针问题真是一大学问啊
C 指针 coy_to_usr

------解决方案--------------------
ssize_t sil9135_read(struct file *filp, char __user *buf, size_t count, loff_t *offset)
{
    size_t ret = 0;
    int i = 0;
    u32 val = 0;
    char *buf1;
    char *kbuf[28];//指向char类型的指针数组。
    unsigned int temp = 0;
    temp = sil9135_read_byte_data(12);
    printk("DS2782_REG_VOLT_MSB = %d\n",temp);
     
    temp = sil9135_read_byte_data(13);
    printk("DS2782_REG_VOLT_LSB = %d\n",temp);
    for(i=0;i<0x1b;i++)
    {
        val = sil9135_read_byte_data(i);//读I2C寄存器值
        buf1 = kmalloc(3, GFP_KERNEL );
        buf1 = IntToStr(buf1,val);
        kbuf[i] = buf1;//kbuf[i](字符指针)指向新开辟的/处于内核空间的buf1内存单元
    }
    for(i=0;i<0x1b;i++)
    {
        printk("kbuf[%d] = %s\n",i,kbuf[i]);//打印kbuf字符型指针数组各成员所指向的字符串
    }
    for(i=0;i<0x1b;i++)
    {
        kfree(kbuf[i]);//释放kbuf字符型指针数组各成员所指向的字符串的内存单元,但是kbuf[i]仍然指向该内存单元
    }
    printk("****%s*****%d\n",__FUNCTION__,__LINE__);
#if 1
    if(copy_to_user(buf, kbuf, strlen(kbuf)))
          //拷贝kbuf字符指针数组成员的值到buf中(kbuf[i]是指针,指向内核空间)
//strlen ???幸亏内存中的NULL很多.
    {
        printk("copy_to_usr error!\n");