Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] gcc ругается на адреса & в функции (http://forum.oszone.net/showthread.php?t=313700)

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_lenghtint &number_of_passwordschar **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=0result number_of_passwordsresult++)
    {
        
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=0symbol 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=10b=1;
    
char **c;
    
    
default_optionsFunction(abc);
    
    return 
0;




В чем может быть проблема?

mrcnn 10-04-2016 13:48 2624860

Попробуйте исполльзовать g++ для компиляции

kennydzzze 10-04-2016 14:15 2624869

mrcnn, Выбор компилятора не от меня зависит, учебное заведение не разрешает пока что писать на с++ и использовать g++.

mrcnn 10-04-2016 14:26 2624873

Тогда обращайтесь по указателю
Код:

#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

Iska 11-04-2016 08:38 2625013

Цитата:

Цитата kennydzzze
Чтобы тему новую не создавать, »

Это против Правил.


Время: 12:22.

Время: 12:22.
© OSzone.net 2001-