Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.231.180.210] |
|
Сообщ.
#1
,
|
|
|
как в С сделать функцию которая возвращает массив строк?
причем чтоб этот массив можно было менять. |
Сообщ.
#2
,
|
|
|
#include <string.h> #include <stdlib.h> #include <stdio.h> typedef struct string { char* str; int len; } string_t; typedef struct string_array { string_t* strings; int len; } string_array_t; void new_string(string_t* out_string, const char* in_string) { out_string->len = strlen(in_string); out_string->str = malloc(sizeof(char) * (out_string->len + 1)); strncpy(out_string->str, in_string, out_string->len + 1); } string_array_t give_me_strings() { string_array_t array; array.len = 2; array.strings = malloc(sizeof(string_t) * array.len); new_string(&array.strings[0], "hello"); new_string(&array.strings[1], "world"); return array; } void free_string_array(string_array_t array) { for (int i = 0; i < array.len; i++) { free(array.strings[i].str); } free(array.strings); } int main() { string_array_t array = give_me_strings(); for (int i = 0; i < array.len; i++) { printf("%s\n", array.strings[i].str); } free_string_array(array); return 0; } |