我想在C语言中将字符串转换为二进制。该函数必须返回一个类似于“010010101”等的字符串(char *)。同时,我想打印返回的内容。但我不能确定这段代码是否正确。
函数
char* stringToBinary(char* s)
{
if(s == NULL) return 0; /* no input string */
char *binary = malloc(sizeof(s)*8);
strcpy(binary,"");
char *ptr = s;
int i;
for(; *ptr != 0; ++ptr)
{
/* perform bitwise AND for every bit of the character */
for(i = 7; i >= 0; --i){
(*ptr & 1 << i) ? strcat(binary,"1") : strcat(binary,"0");
}
}
return binary;
}
malloc(sizeof(s)*8);
的意思是分配一个可以存储8个s
类型数据的内存空间。而never trust user (_caller_)
的意思是永远不要相信用户(调用者)。 - Sourav Ghoshs
是一个指向字符的指针。sizeof s
是一个char*
的大小(可能是 4 或 8 字节)。 - melpomene