我发现令人费解的是,如果你没有初始化它(在当前范围内),你不知道一个数组有多长,即只有指向数组的指针,但像printf
这样的函数可以利用char
数组的null终止符,用于计算何时停止打印。
是否有库函数或简单算法允许我仅在给定指针的情况下找出数组的长度?
我的问题是我将一个char数组传递给一个函数,在它周围添加引号"
,表明它是一个传递给python脚本以正确处理的字符串。由于传入的字符串可以是可变长度,我不能只初始化给定长度的char数组并在那里操作它,这就是为什么我试图找到传入的char数组的长度。
如何将元素添加到未知大小的char数组的正面和背面?
代码:
void format_ip(char *ip, char *ptr_to_new_ip){
//sizeof(ip) here obviously returns the size of a pointer in memory
//Instead, I need to find the actual length of the array
char array[sizeof(ip) + 2];
memcpy(array + 1, ip, sizeof(ip));
array[0] = '\"';
array[sizeof(ip) + 1] = '\"';
memcpy(ptr_to_new_ip, array, sizeof(ip)+2);
}
编辑:由于缺少正式的答案,这是通过使用strlen
解决的,GetDefaultParameterValue
返回给定指针的空终止char数组的长度。感谢Tio Pepe获得答案。