将C字符串转换为Pascal风格的字符串



我正在尝试将一个普通的C字符串转换为Pascal字符串。当我需要将pascal字符串的第一个索引指定为字符串的长度时,我遇到了麻烦。我将把我的代码放在下面,但我似乎不知道如何将原始字符串的长度(尤其是当它超过10时(slen转换为可以分配给索引的字符。

char pascal[slen];
char pascalFirst = slen + '0';  //Having such a hard time assigning pascal[0]
printf("%cn", pascalFirst);
pascal[0] = pascalFirst;
printf("%s pasFirstn", pascal);
for (int i =0 ; i < strlen(pascal); i++){
pascal[i+1] = s[i];
}
printf("%sn", pascal);

它应该是一个简单的如:

char* to_pstr(char* src) {
char* p = malloc(strlen(src) + 1);
*((unsigned char*) p) = strlen(src);
strncpy(src, &p[1], strlen(src));
return p;
}

其中这当然假定src是<=255个字符长。

最新更新