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

标签 c c-strings

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

char pascal[slen];
char pascalFirst = slen + '0';  //Having such a hard time assigning pascal[0]
printf("%c\n", pascalFirst);
pascal[0] = pascalFirst;

printf("%s pasFirst\n", pascal);

for (int i =0 ; i < strlen(pascal); i++){
    pascal[i+1] = s[i];

}
printf("%s\n", 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 个字符长。

关于将 C 字符串转换为 Pascal 风格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63892736/

相关文章:

c++ - 当字符串为 '\0' 时如何结束二维字符数组?

c - 定时服务器响应时间

c - 为什么C更接近硬件?

C - 使用 strlen 时出现段错误?

C - 截断的字符数组输入自动分配给下一个字符数组

c - 在 C 中读取字符串以防止出现问题的正确方法是什么

c -/proc/self/映射到实际代码的段

c++ - 了解 C 和 C++ 中的暂定定义

c++ - 计算一个单词中的音节数,但考虑到单词中任何相邻的元音都算作一个音节

c - 从字符串中读取数字数组