R1S8K Ответов: 2

Передайте несколько строк в функцию C


Я изучаю основы и принципы С.
Теперь я перешел к указателям, строкам и структурам.
Теперь я работаю над этим кодом, чтобы передать содержимое массивов функциям.
У меня есть этот код для передачи содержимого различных массивов в функцию.
То, что мне удалось сделать, это:

1. Как передать одну полную строку, потому что она рассматривается как один элемент массива.
2. Как передать массив char и ints.

Проблемы, которые у меня сейчас есть:

1. Как передать массивы из нескольких строк в функции.
2. как назначить указатель на массивы, чтобы передать их также функциям.

Это мой код до сих пор:
Есть комментируемые части, чтобы показать работу, которую я проделал в коде, на самом деле я новичок в C. Я просто чувствую, что приятно оставлять упорядоченные комментируемые строки, чтобы читатели лучше понимали мою проблему.


#include<stdio.h>
#include<string.h>
#include<stdint.h>

    void print_array(char *arr,int8_t cnt);
    void print_array(char *arr,int8_t cnt)
    {
        int_fast8_t i;
        printf("Number of elements is: %d\n",cnt);
        for (i=0;i<cnt;i++)>
        {
            printf("Elements of array: %s\n",arr);
        }
    }

    void print_len (char *arr,int8_t cnt);

    void print_len (char *arr,int8_t cnt)
    {
        char i,l=strlen(arr);
            for (i=0;i<cnt;i++)>
        {
            printf ("%d\n",strlen(arr));
        }
    }


int main()
{

    char *array_5 [] = {"mm","End of Multiple Strings Array","simple bluetooth connection",
    "datalogging purposes and accessing recorded data","THE OPERATING ENVIRONMENT"};

    int8_t cnt5 = sizeof(array_5)/sizeof(array_5[0]);
    int8_t len5;

    print_len(*array_5,cnt5);
    print_array(*array_5,cnt5);
    return 0;
}
pre>

What I have tried:

Pass multiple strings array pointer to a function, with name of the array as a start and then I think to develop array of arrays pointers to pass them consequently to a function pointer.

I have changed the asterisk in the function call, function declaration, definition and printf of the array pointer.</stdint.h></string.h></stdio.h>

Patrice T

Где код ?
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

2 Ответов

Рейтинг:
9

R1S8K

Большое вам спасибо за ответ, вчера вечером я взбесился, потому что искал в электронных книгах упражнение или пример об этом конкретном действии. А я не мог, тогда сегодня утром я сказал об этом тренеру, и он сразу же решил эту проблему! Все очень просто.

    void print_array(char *arr[],int8_t cnt);
    void print_array(char *arr[],int8_t cnt)
    {
        int8_t i;
        printf("Number of elements is: %d\n",cnt);
        for (i=0;i<cnt;i++)
        {
            printf("Elements of array: %s\n",arr[i]);
        }
    }

print_array(array_5,cnt5);


Рейтинг:
15

Afzaal Ahmad Zeeshan

Несколько вещей, прежде всего, если вы собираетесь это сделать,

void print_array(char *arr,int8_t cnt);
void print_array(char *arr,int8_t cnt) {}

Лучше просто сделать более поздний вариант, удалить оператор declaration и сохранить только определение (и объявление). Во-вторых, поскольку вы уже знаете, как передавать строки (которые представляют собой массив символов). Подобный этому,
print_array(char *arr, int8_t cnt) { }

Что мешает вам сделать это?
print_arrays(char **arr, int8_t cnt) { } // cnt won't make much sense now.

Обратите внимание, что я использовал указатель на указатель[^] здесь. Что означает, или, по крайней мере, я могу сказать, в контексте языка Си, массив массива. Тогда вы можете сделать на нем следующее,
char **array = { "Afzaal", "Ahmad", "Zeeshan" };
// print_arrays(array, 3);

В конце концов, я на самом деле не получил ту часть, где ты хотел назначьте указатель на массив, потому что ты на самом деле получить указатель на массив Однако теперь это приведет нас в область C++, где поддерживаются ссылки, и, насколько я могу заключить, C не поддерживает pass-by-reference, а только pass-by-value, и именно поэтому функции C выглядят так,
void func(char *obj) {
   // Do something
}

int main() {
   int a = 25;
   func(&a);
} 

Я бы двигал вас вперед, чтобы вы чему-то научились, продолжайте пытаться. Моя личная рекомендация-использовать компилятор GCC. Это хорошая идея, и лично мне она нравится.

Передача значения по ссылке в C и C++ - форум C++ [^]
Строки в C[^]
Строки C - Cprogramming.com[^]