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