Что я здесь сделал неправильно? Он падает после ввода count
, а затем моего массива Это должно быть что-то с распределением памяти, но я пробовал много вещей, и никто из них не помогал. спасибо за ответ хрустального шарападает после ввода
struct _arr {
size_t count;
int* arr;
};
typedef struct _arr array_t;
array_t array_create(int* arr, size_t count){
array_t* newArr;
newArr = (array_t*)malloc(sizeof(count)+sizeof(int)*count);
newArr->count = count;
newArr->arr = arr;
return *newArr;
}
array_t array_get(FILE* file){
int* arr = NULL;
size_t count;
array_t arr_t;
int i = 0;
if (!file) return;
if (!fscanf(file, "%u", &count)) return;
arr_t = array_create(arr, count);
for (i = 0; i < arr_t.count; i++){
if (!fscanf(file, "%d", &arr_t.arr[i])) return;
}
for (i = 0; i<arr_t.count; i++)
printf("%d ", arr_t.arr[i]);
printf("\n");
return arr_t;
}
int main(){
array_t arr;
int i = 0;
arr = array_get(stdin);
for (i = 0; i<arr.count; i++)
printf("%d ", arr.arr[i]);
getch();
return 0;
}
Если вы думаете, что 'array_create()', удобно опущенный из опубликованного источника, как-то незначительно и не имеет ничего общего с вашей проблемой, вы, вероятно, ошибаетесь. Отправьте его. – WhozCraig
Ваша функция иногда ничего не возвращает, не компилирует ли ваш компилятор об этом? –
@CharlieBurns выдающийся улов. отступы и однострочная if-logic полностью скрывали это от моих усталых глаз. – WhozCraig