试图写一个简单的pascal到cstring的转换方法。该方法将一个void * ptr传递给pascal字符串。生成的cstring为传递的pascal字符串返回正确的字符数。但它包含的是字符串长度的十六进制值。例如,pascal字符串的第一个元素是字符串的长度。因此,例如,如果第一个元素中的数字是15,那么return语句将返回一个包含15个字符并全部设置为FF的cstring。就像指针没有增加一样。不知道如何解决这个问题。任何帮助,将不胜感激。Pascal String to cstring
#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;
}
'(字符*)PTR + 1现住址;'应该是'(字符*)PTR ++'; – dvhh
添加:你的int大小是多少?你的pascal字符串的最大尺寸是多少? – dvhh
int的值是pascal字符串中第一个元素的值。 pascal字符串的大小没有上限。用++递增投射指针不起作用。 – Keith