На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> как в С сделать функцию которая возвращает массив строк
    как в С сделать функцию которая возвращает массив строк?
    причем чтоб этот массив можно было менять.
      ExpandedWrap disabled
        #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;
        }
      Сообщение отредактировано: Qraizer -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0164 ]   [ 16 queries used ]   [ Generated: 27.04.24, 16:57 GMT ]