Я пытаюсь получить доступ к структуре с указателем на целое, от main. Но программа вылетает из строя. Он должен быть построен с опцией «std = c99», поскольку это требование в тесте.segfault при попытке доступа к структуре; compile option - gcc -std = c99
Код выглядит следующим образом:
#include <stdio.h>
#include <malloc.h>
struct Results{
int *A;
int N;
};
struct Results solution(int A[], int N, int K) {
struct Results result;
// write your code in C99 (gcc 4.8.2)
int* T = (int*) malloc(N*sizeof(int));
result.A = A;
result.N = N;
int count = 0;
while(count < K)
{
for(int i = 0; i < N; i++)
{
if(i > 0)
{
T[i] = A[i-1];
}
else
{
T[0] = A[N-1];
}
}
count++;
for(int i = 0; i < N; i++)
{
A[i] = T[i];
}
};
for(int i = 0;i < N; i++)
{
A[i] = T[i];
}
return result;
}
struct Results solution(int A[], int N, int K);
void main()
{
int B[5] = {3,8,9,7,6};
struct Results st;
solution(B,sizeof(B),1);
}
Проблема заключается в строке: "раствор (В, SizeOf (В), 1);" Что я делаю неправильно?
Пожалуйста, помогите.
1) Не выдавайте результат 'malloc' & friends в C. 2) Зачем использовать прототип _after_ определения функции (что подразумевает декларирование). – Olaf
1) @iharob имеет правильный ответ, но вы также должны помнить о том, чтобы освободить выделенную память с помощью 'malloc' ... и ... почему вы используете' malloc'? Возможно, вы хотели написать 'result.N = T;' вместо 'result.N = N;'? – Myst