Ошибка сегментирования - C (СИ) (70487)

Узнай цену своей работы

Формулировка задачи:

Никак не могу понять в чем же дело, выдает Ошибку сегментирования:
#include <stdio.h>
#include <stdlib.h>
    
int* boob(int *len)
{
    int *mas;
    int j,i,t;  
    for (i =(*len)-1; i >= 0; i--)
    {
        for (j = 0; j < i; j++)
        {
            if (mas[j] > mas[j + 1])
            {
                t = mas[j];
                mas[j] = mas[j + 1];
                mas[j + 1] = t;
                
            }        
        }
    }
    for (i=0;i<(*len);i++)
    {
        printf("%d ",mas[i]);   
    }   
}   

int main()
{   
    int *len;   
    int *mas;
    int i;
    mas = 0;
    printf("Введите число элементов\n");
    scanf("%d",len);
    mas = (int*)malloc((*len)*sizeof(int));
      
    for(i=0;i<(*len);++i)
    {
        printf("Введите элемент № %d ",i+1);
        scanf("%d",(mas+i));
    }
    
    int *p;    
    p=boob(len);
    free(p);

}
Забыл написать: Программа сортировки чисел по возрастанию. Операции над массивом должны быть вынести в отдельную функцию, в которую передается указатель на массив. И ещё вопрос: как можно вынести задание массива в отдельную функцию и использовать её? Никак не могу понять в чем же дело, выдает Ошибку сегментирования, помогите, пожалуйста, разобраться.

Решение задачи: «Ошибка сегментирования»

textual
Листинг программы
void array_input(int * mas, int len)
{
    for(int i=0; i<len; ++i)
    {
        printf("Введите элемент № %d ",i+1);
        scanf("%d", &mas[i]);
    }
    
}
// использовать так
array_input(mas, len);

Объяснение кода листинга программы

В данном коде реализована функция array_input, которая считывает элементы массива с помощью функции scanf.

  1. Входные параметры функции:
    • mas - указатель на первый элемент массива
    • len - длина массива, т.е. количество элементов в нем
  2. Тело функции:
    • Цикл for, который выполняется для каждого элемента массива
      • Вывод сообщения с просьбой ввести элемент под номером i+1
      • Считывание значения i-го элемента массива с помощью функции scanf
      • Считывание значения в переменную mas[i]
  3. Код, который вызывает функцию array_input:
    • mas - указатель на массив
    • len - длина массива Ошибка сегментирования может возникнуть, если пользователь введет некорректное значение (например, букву вместо числа), которое не может быть помещено в переменную типа int.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы