Ошибка сегментирования - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д