• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Передача Указателя На Двумерный Массив В Функцию

  • Автор темы morg4n
  • Дата начала
M

morg4n

Здравствуйте. Как правильно передать указатель на двумерный массив и как с ним правильно работать?
C++:
int input_strings(char* arr_str){
int i,n;
for(i = 0;i<MAXSIZE;i++){
printf ("line %-2d: ", i);
gets(arr_str[i]);
if(!arr_str[i]) break; // выход по пустой строке
n++; //кол-во строк
} 
return n;
}

int main(void) {
char arr_str[MAXSIZE][MAXLENGTH];
int n;

n = input_strings(&arr_str);
}
 
M

morg4n

Решил вопрос следующем способом:
C++:
Код:

#define MAXLENGTH 129
#define MAXSIZE 20

char arr_str[MAXSIZE][MAXLENGTH];

int input_strings(){
int i,n;
for(i = 0;i<MAXSIZE;i++){
printf ("line %-2d: ", i);
gets(arr_str[i]);
if(!arr_str[i]) break; // выход по пустой строке
n++; //кол-во строк
} 
return n;
}

int main(void) {

int n;
n = input_strings();
}

Но мне по-прежнему интересно: как, мать его, передать в функцию массив.
 
M

morg4n

C++:
#include <cstdio>

#define MAXLENGTH 129
#define MAXSIZE 20

int input_strings(char arr_str[MAXSIZE][MAXLENGTH]){
int i,n = 0;
for(i = 0;i<MAXSIZE;i++){
printf ("line %-2d: ", i);
gets(arr_str[i]);
if(!arr_str[i]) break; // выход по пустой строке
n++; //кол-во строк
}
return n;
}

int main(void) {
char arr_str[MAXSIZE][MAXLENGTH];
int n = input_strings(arr_str);

return 0;
}
 
R

rrrFer

int input_strings(char* arr_str){

ты передал указатель на массив символов, но у тебя же двумерный массив
тебе надо передать указатель на массив указателей на массив символов (поставивь две звездочки)

Добавлено:
Код:
#include <cstdio>
#define N 5
#define M 80

int input_strings(char *a[N], int n) {
for (int i = 0; i < n; ++i) 
gets(a[i]);
}

int output_strings(char **a, int n) {
for (int i = 0; i < n; ++i) 
puts(a[i]);
}


int main(void) {
char **a;
a = new char*[N]; // N указателей на массивы
for (int i = 0; i < N; ++i)
a[i] = new char[M]; // по каждому указателю будет строка из 80 символов

input_strings(a, N);

output_strings(a, N);

// не забудь память освободить


return 0;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!