Pascal String to cstring

时间:2016-10-24 04:12:03

标签: c string pointers

尝试将简单的pascal写入cstring转换方法。该方法对pascal字符串采用void * ptr。生成的cstring返回传递的pascal字符串的正确字符数。但它包含的只是字符串长度的十六进制值。例如,pascal字符串第一个元素是字符串的长度。因此,如果第一个元素中的数字是15,那么return语句将返回一个包含15个字符的cstring,所有字符都设置为FF。就好像指针没有递增一样。不知道如何解决这个问题。任何帮助将不胜感激。

#include <stdio.h>
#include <stdlib.h>

char* pascal_convert(void* ptr) {
int len = *((int*)ptr)+1;
char *cString = malloc(sizeof(char) * (len));
(int*)ptr + 1;
for (int i = 0; i < len; i++) {
    cString[i] = *((char*)ptr);
    (char*)ptr + 1;
}
cString[len] = '\0';
return cString;

}

1 个答案:

答案 0 :(得分:1)

您需要在某处存储字符串的当前地址

int currentPtr = (int*)ptr + 1;
for (int i = 0; i < len; i++) {
    cString[i] = *((char*) currentPtr);
    currentPtr++;
}