 |
|
kennydzzze |
10-04-2016 11:43 2624839 |
gcc ругается на адреса & в функции
Пишу на Си в linuxe, компилирую код с помощью gcc. Компилятор ругается на адреса в функции.
PHP код:
#include <stdio.h> #include <stdlib.h> #include <time.h> void default_optionsFunction(int &password_lenght, int &number_of_passwords, char **password_generation) { srand(time(NULL));
password_lenght=10; // Длина пароля number_of_passwords=1; // Количество паролей const int lower_case=1; // Подключение нижнего регистра const int capital_letters=1; // Подключение верхнего регистра int symbolType=NULL; // Тип символов
int variants_of_symbols = password_lenght/(lower_case + capital_letters); // Формула вычисления количества используемых символов каждого типа // Выделение памяти для паролей int result=NULL; // Переменная (генерация необходимого количества паролей) int symbol=NULL; // Переменная (индекс символа) password_generation = (char **)malloc(number_of_passwords*sizeof(char *)); for (result=0; result < number_of_passwords; result++) { password_generation[result] = (char*)malloc(password_lenght*sizeof(char)); } // Генерация паролей result=0; while (result < number_of_passwords) { int lower_caseType=0; // Переменная (необходима для границ генерации символов нижнего регистра) int capital_lettersType=0; // Переменная (необходима для границ генерации символов верхнего регистра) for (symbol=0; symbol < password_lenght; ) { if (symbol == password_lenght) { password_generation[result][symbol] = '\0'; break; } symbolType = rand()%2+1; // Заполнение пароля нижним регистром if (symbolType == 1) { if (lower_caseType > variants_of_symbols) continue; if (lower_caseType < variants_of_symbols) { password_generation[result][symbol] = rand()%26+97; lower_caseType++; symbol++; } } // Заполнение пароля верхним регистром if (symbolType == 2) { if (capital_lettersType > variants_of_symbols) continue; if (capital_lettersType < variants_of_symbols) { password_generation[result][symbol] = rand()%26+65; capital_lettersType++; symbol++; } } }
puts(password_generation[result]); result++; } return; } int main() { int a=10, b=1; char **c; default_optionsFunction(a, b, c); return 0; }
В чем может быть проблема?
|
Попробуйте исполльзовать g++ для компиляции
|
kennydzzze |
10-04-2016 14:15 2624869 |
mrcnn, Выбор компилятора не от меня зависит, учебное заведение не разрешает пока что писать на с++ и использовать g++.
|
Тогда обращайтесь по указателю
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void default_optionsFunction(int* password_lenght, int* number_of_passwords, char **password_generation)
{
srand(time(NULL));
*password_lenght=10; // Длина пароля
*number_of_passwords=1; // Количество паролей
const int lower_case=1; // Подключение нижнего регистра
const int capital_letters=1; // Подключение верхнего регистра
int symbolType=NULL; // Тип символов
int variants_of_symbols = (*password_lenght)/(lower_case + capital_letters); // Формула вычисления количества используемых символов каждого типа // Выделение памяти для паролей
int result=NULL; // Переменная (генерация необходимого количества паролей)
int symbol=NULL; // Переменная (индекс символа)
password_generation = (char **)malloc((*number_of_passwords)*sizeof(char *));
for (result=0; result < (*number_of_passwords); result++)
{
password_generation[result] = (char*)malloc((*password_lenght)*sizeof(char));
}
// Генерация паролей
result=0;
while (result < (*number_of_passwords))
{
int lower_caseType=0;
// Переменная (необходима для границ генерации символов нижнего регистра)
int capital_lettersType=0;
// Переменная (необходима для границ генерации символов верхнего регистра)
for (symbol=0; symbol < (*password_lenght); )
{
if (symbol == (*password_lenght))
{
password_generation[result][symbol] = '\0';
break; }
symbolType = rand()%2+1;
// Заполнение пароля нижним регистром
if (symbolType == 1)
{
if (lower_caseType > variants_of_symbols) continue;
if (lower_caseType < variants_of_symbols)
{
password_generation[result][symbol] = rand()%26+97;
lower_caseType++;
symbol++;
} }
// Заполнение пароля верхним регистром
if (symbolType == 2)
{
if (capital_lettersType > variants_of_symbols)
continue;
if (capital_lettersType < variants_of_symbols)
{
password_generation[result][symbol] = rand()%26+65;
capital_lettersType++;
symbol++;
}
}
}
puts(password_generation[result]);
result++;
}
return;
}
int main()
{
int a=10, b=1;
char **c;
default_optionsFunction(&a, &b, c);
return 0;
}
|
kennydzzze |
10-04-2016 14:45 2624880 |
mrcnn, спасибо, помогло.
|
kennydzzze |
11-04-2016 07:24 2625004 |
del
|
Цитата:
Цитата kennydzzze
Чтобы тему новую не создавать, »
|
Это против Правил.
|
Время: 12:22.
© OSzone.net 2001-