試圖寫一個簡單的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