15,882,802 members
See more:
I want to know what is segmantation fault...And tell me why my programme shows segmantation fault in Hackerrank.

What I have tried:

Question>-
Given an N numbers array. Rotate the elements of the array in the direction specified by the user(Left or right). If rotation index is Negative, rotate Left otherwise rotate Right

Input Format

Input will contain 2 lines.
First line contains the 2 integers specifying number of elements and the rotation index.
Second line contains space separated elements of the array.

Constraints

N >= 1

Output Format

Space separated elements of the array

Sample Input 0

7 -2
1 2 3 4 5 6 7
Sample Output 0

3 4 5 6 7 1 2
Explanation 0

-2 means 2 left rotations.
So 1, 2 goes to the back of the array

C
```#include <stdio.h>
//#include<string.h>
int main()
{
int i,j,n,k,z;
int o=0;
int A[99999],B[99999];
scanf("%d%d",&n,&k);
//int *A=malloc(sizeof(int)*n);
//int *B=malloc(sizeof(int)*n);
for(i=0; i<n; i++)
scanf("%d",&A[i]);
if(k<0)
{
z=(-1)*k;

for(i=z; i<n; i++)
B[o++]=A[i];
for(i=0; i<z-1; i++)
B[o++]=A[i];
for(i=z-1; i<z; i++)
B[o++]=A[i];
//free(A);

}
else if(k>0)
{
for(j=n-k; j<n; j++)
B[o++]=A[j];
for(j=0; j<n-k-1; j++)
B[o++]=A[j];
for(j=n-k-1; j<n-k; j++)
B[o++]=A[j];
// free(A);
}
for(i=0; i<n; i++)
printf("%d ",B[i]);
return 0;
}```
Posted
Updated 19-Sep-17 21:58pm
v2

## Solution 2

Quote:
z=(-1)*k;

for(i=z; i<n; i++)
B[o++]=A[i];

When `k` is odd you get `z = -1` and eventually you access `A[-1]`

## Solution 1

See Segmentation fault - Wikipedia[^].

Why it occurs with your code when checked at HackerRank can't be answered here because we don't know how it is executed there.

But it might be that their tests include passing invalid input values which are not handled by your program (e.g. n < 1, n >= 99999, abs(k) > n).