Как я могу развернуть структуру? Пример:Как вы обмениваете структуру?
typedef struct String_s {
int current_location;
int size;
char data[0];
} String;
char* String_getCString(String *str){
return &str->data[0];
}
//this is supposed to take the result of 'String_getCString' and reverse the process to get the String*
//i.e. String_getCString(CString_getString(str)) == str
String* CString_getString(char *str){
//???
}
int foo(char *cstr){
printf("%s\n", cstr);
fflush(0);
free(CString_getString(cstr));
}
int main(int argc, char *argv[]){
const char *hello_world = "hello world";
String *str = (String*)malloc(sizeof(String)+1000*sizeof(char));
str->size = 1000;
str->count = strlen(hello_world);
char *cstr = String_getCString(str);
strcpy(cstr, hello_world);
foo(cstr);
return 0;
}
Вы могли бы. Это заставит вас в конце концов вытащить волосы, так что не надо. Если вам нужно получить доступ к структуре, передайте ее. – StoryTeller
@Zack добавил дополнительные комментарии. – chacham15
Вам нужно сохранить список созданных структур и выполнить поиск на основе строк, чтобы найти эту структуру. – cup