我想在一个函数中找到一个无符号字符指针的大小或长度,该指针是该函数的参数。接近指针声明大小是正确的。

但是当我试图在函数中找到大小时,它给出了 4。

我怎样才能做到这一点 ?

#include <stdio.h>
//void writeFile(unsigned char *da);
void writeFile(char *da);
int main(int arc,char **argv)
{

 unsigned char block_bmp[]=
{
   0x0,0xff,0xff,0xff,0x0,0x0,0x0,0xff,0xff,0xff,0x0,0x0,0x0,0xff,0xff,0xff,//*16bytes*
};
printf("size::%d\n",sizeof(block_bmp));
writeFile(block_bmp);
}

//void writeFile(unsigned char *da)
void writeFile(char *da)
{
printf("%d\n",__LINE__);
printf("size::%d\n",sizeof(da));
printf("length::%d\n",strlen(da));
FILE *fp;
int i;
fp=fopen("/tmp/hexfile","wb");
for(i=0;i<3780;i++)
    fprintf(fp,"%c",da[i]);
//  fwrite(da,sizeof(unsigned char),sizeof(da),fp);
fclose(fp);
}

最佳答案

如果它指向以 NULL 结尾的字符串,请使用 strlen 。如果不是,则指针只是被调用函数的一些内存地址,没有关于数组大小的任何其他信息(我假设,您尝试传递一个数组)。我建议将数组元素的数量作为附加参数传递给函数。

关于c - 如何在C中找到无符号字符指针的长度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22829838/

10-11 12:50