Reputation: 21
When I compile and run the following code using terminal commands(in linux mint sonya)
gcc -o program program.c
./program
I get a segmentation fault. When I do the same using Code::blocks IDE, I don't get any error. I am aware that segmentation fault arises when an illegal memory is accessed. What's wrong?
#include <stdio.h>
int main()
{
int t;
scanf("%d",&t);
for(t;t>0;t--)
{
int i,j,n,arr[n],sump=0,sums=0,total,ans;
scanf("%d",&n);
for(i=0;i<=n-1;i++) scanf("%d",&arr[i]);
for(i=0;i<=n-1;i++,sump=0,sums=0)
{
for(j=0;j<=i;j++) sump=sump+arr[j];
for(j=n-1;j>=i;j--) sums=sums+arr[j];
if(i==0) ans=sump+sums;
else if(ans>sump+sums) ans=sump+sums;
}
for(i=0;i<n;i++,sump=0,sums=0)
{
for(j=0;j<=i;j++) sump=sump+arr[j];
for(j=n-1;j>=i;j--) sums=sums+arr[j];
if(ans==sums+sump) break;
}
printf("%d\n",i+1);
}
}
Upvotes: 0
Views: 175
Reputation: 2837
You are declaring arr[n]
without initializing the value of n
.
That is undefined behavior...
Upvotes: 7