C/C++ - [решено] Вывод массива char из функции

Ответить
Аватара пользователя
kennydzzze

C/C++ - [решено] Вывод массива char из функции

Сообщение kennydzzze »

Не получается вывести значения массива в main, который заполняется внутри функции. Вместо 'a' символов выводит случайные символы.



PHP код:

Код: Выделить всё

#include  
#include  

void f(char *c, int *n) 
{ 
    *n=10; 
    c=(char*)malloc(*n+1); 
    for(int i=0; i
Аватара пользователя
User001

Re: C/C++ - [решено] Вывод массива char из функции

Сообщение User001 »

Цитата kennydzzze:



void f(char *c, int *n)
C/C++ - [решено] Вывод массива char из функции




Надо передавать указатель на указатель, если вы хотите его изменять.

Код:

Код: Выделить всё

void f(char **c, int *n)

Соответственно:


Цитата kennydzzze:



c=(char*)malloc(*n+1);
C/C++ - [решено] Вывод массива char из функции






Код:

Код: Выделить всё

*c = (char*)malloc(*n+1);


Цитата kennydzzze:



c='a';
C/C++ - [решено] Вывод массива char из функции






Код:

Код: Выделить всё

(*c)[i]='a';

Тут в принципе неверно:


Цитата kennydzzze:



printf("%c",&c);
C/C++ - [решено] Вывод массива char из функции






Код:

Код: Выделить всё

printf("%c", c[i]);

А еще надо память и освобождать.



И основной вопрос - зачем вам вообще вся эта адресная арифметика?
Аватара пользователя
kennydzzze

Re: C/C++ - [решено] Вывод массива char из функции

Сообщение kennydzzze »

Спасибо, помогло.




Цитата User001:



void f(char **c, int *n)
C/C++ - [решено] Вывод массива char из функции




Я думал так передаются двумерные динамические массивы, точнее указатели на них.




Цитата User001:



А еще надо память и освобождать.
C/C++ - [решено] Вывод массива char из функции




Это да, но тут не думаю, что это нужно, это как образец.




Цитата User001:



И основной вопрос - зачем вам вообще вся эта адресная арифметика?
C/C++ - [решено] Вывод массива char из функции




Пишу консольное приложение генератор паролей с функционалом.



п.с. в мейне я тогда должен передавать адрес одномерного массива в функцию? f(&c, &a);
Аватара пользователя
User001

Re: C/C++ - [решено] Вывод массива char из функции

Сообщение User001 »

Цитата kennydzzze:



Я думал так передаются двумерные динамические массивы, точнее указатели на них.
C/C++ - [решено] Вывод массива char из функции




Смотря как вы используете это. В вашем случае была проблема - у вас есть переменная типа (char *) вы ее передаете в функцию (в ней это другая - локальная переменная) и внутри нее меняете значение. После выхода функции вы уже работаете с переменной, определенной в контексте метода main(), поэтому, значение не сохраняется.


Цитата kennydzzze:



Это да, но тут не думаю, что это нужно, это как образец.
C/C++ - [решено] Вывод массива char из функции




Привыкайте делать сразу. И продумайте где выделять память и где освобождать.


Цитата kennydzzze:



п.с. в мейне я тогда должен передавать адрес одномерного массива в функцию? f(&c, &a);
C/C++ - [решено] Вывод массива char из функции




Да.
Аватара пользователя
kennydzzze

Re: C/C++ - [решено] Вывод массива char из функции

Сообщение kennydzzze »

User001, Не могли бы вы прояснить ситуацию с передачей двумерных динамических массивов? Задача та же самая, нужно передать массив типа char, только уже двумерный, забить значениями и вывести его в main:



PHP код:

Код: Выделить всё

#include  
#include  

void f(char ***c, int *n) 
{ 
    *n=10;

    *c=(char**)malloc(*n*sizeof(char*));
    for (int i=0; i



Код не компилируется, выводит ошибки на 11 и 16 строки(указал в комментариях кода). Компилятор dev-cpp 5.11
Аватара пользователя
User001

Re: C/C++ - [решено] Вывод массива char из функции

Сообщение User001 »

Цитата kennydzzze:



(*)c=(char*)malloc(5*sizeof(char));
C/C++ - [решено] Вывод массива char из функции




(*c)


Цитата kennydzzze:



(*)c='a'; //[Error] expected primary-expression before ')' token
C/C++ - [решено] Вывод массива char из функции




(*c)[j]. Соответственно - внутренний цикл еще один нужен, т.к. массив 2-мерный.


Цитата kennydzzze:



printf("%s\n",c);
C/C++ - [решено] Вывод массива char из функции




printf("%c\n", c[j]);



И почините оформление.
Аватара пользователя
kennydzzze

Re: C/C++ - [решено] Вывод массива char из функции

Сообщение kennydzzze »

Цитата User001:



(*c)[j]
C/C++ - [решено] Вывод массива char из функции




Видимо я вчера совсем перенапрягся после учебы... Спасибо.




Цитата User001:



printf("%c\n", c[j]);
C/C++ - [решено] Вывод массива char из функции




Здесь не вижу никакой ошибки, %s выводит строку . Все норм было.




Цитата User001:



И почините оформление.
C/C++ - [решено] Вывод массива char из функции




Какое оформление? Темы? Что не так с ним?
Аватара пользователя
User001

Re: C/C++ - [решено] Вывод массива char из функции

Сообщение User001 »

Цитата kennydzzze:



Здесь не вижу никакой ошибки, %s выводит строку . Все норм было.
C/C++ - [решено] Вывод массива char из функции




Я вашей задумки не знаю. Если это массив строк, то не забывайте +1 символ выделять для \0.


Цитата kennydzzze:



Какое оформление? Темы? Что не так с ним?
C/C++ - [решено] Вывод массива char из функции




Я про оформление кода: пробелы после for, константы (5) посреди кода и т.д.
Ответить

Вернуться в «Программирование и базы данных»