| New Reply |
segmentation fault (core dumped) C error for structures |
Share Thread | Thread Tools |
| Dec26-12, 12:37 AM | #1 |
|
|
segmentation fault (core dumped) C error for structures
I have written a C program that produce a structure, give it's elements their initial values and change these values when neccessary.I can compile my program but when I try to run it,error:"segmentation fault(core dumped)" appears.I commented different parts of my program and I underentood the problem is related to my structur.The code is:
Code:
#define PN 5000 //number of players I chose
#define RN 10 //number of array's rows
#define N number of array's columns
enum logical {W,R};
main()
{
int j=0,i=0,logic=R,r[100000]={0};
struct plrrecord
{
int n;//identity number of the player
short int lfstat;//life status: dead or alive
short int ch[RN][N];
};
struct plrrecord plr[PN];
while( i<PN )
{
r[i]=(int)(drand48() * 10000);
for( j=0 ; j<i ; j++)
{ if( r[j]==r[i] )logic=W;}
if( logic==R )
{
cplr[r[i]].n=r[i];
i++;
}
else { logic = R; }
}
for(i=0;i<PN;i++)
printf("%i\t",cplr[i].n);/****/
return 0;
}
which should not be repeated.I check if their number is repeated in a "while-loop".The "logic" varible helps me here.If it's value is "R" then the number is not repeated.If it's vlue is "w" then I should chose another number.The array "r" saves the random numbers chsen before. Now I think the error is related to the line with printf,I put a /****/ in that line,because when I comment this line thre is no error anymore. What do you thik yhe problem is? How do you think we can solve this problem? |
| Dec26-12, 03:04 AM | #2 |
|
Admin
|
Plenty of problems, I doubt what you posted compiles.
Why do you use drand48() instead of a simple rand()? What is the maximum possible value of (int)(drand48()*10000)? |
| Dec26-12, 03:54 AM | #3 |
|
|
100% agree with Borek: there are just way too many problems with that code snippet.
|
| Dec26-12, 09:28 AM | #4 |
|
|
segmentation fault (core dumped) C error for structures
I've forgotten more than I ever knew about C, but I do note that you define the player variable as 'plr' but then assign values to 'cplr'. Is that the kind of thing that might lead to pointers gleefully messing with memory?
|
| Dec30-12, 01:22 AM | #5 |
|
|
The problem with calling plr instead of cplr was not serous,it happend when I was omitting extra rows of my program to make it simpler( I did it so that parts that are not related to the problem do not botter us)
The code is: Code:
#include <stdio.h>
#include <stdlib.h>
#define PN 10 //number of players I chose
#define RN 10 //number of array's rows
#define N 2 //number of array's columns
enum logical {W,R};
main()
{printf("Hi");
int j=0,i=0,logic=R,r[100000]={0};
struct plrrecord
{
int n;//identity number of the player
short int lfstat;//life status: dead or alive
short int ch[RN][N];
};
printf("environmental sourc:");
struct plrrecord cplr[PN];
while( i<10 )
{
r[i]=(int)(drand48() * 10000);
for( j=0 ; j<i ; j++)
{ if( r[j]==r[i] )logic=W;}
if( logic==R )
{
cplr[i].n=r[i];
i++;
}
else { logic = R; }
}printf("%i\t",i);
for(i=0;i<PN;i++)
printf("%i\n",cplr[i].n);
return (0);
}
Code:
cplr[r[i]].n=r[i] |
| Dec30-12, 05:53 AM | #6 |
|
Admin
|
What is the number of the last element in table[10000]? What is the maximum value of (int)(drand48() * 10000)?
|
| Dec31-12, 06:26 AM | #7 |
|
|
Before changing the first program,a numer like r1 between 0 and 10000-1 was saved in the 9999th element of array so the array was chosen in a way so that always the program have an empty element for it.
dran48() gives a random number beween 0 and 1(not including 1 or a number in scale [0 1) ) so drand48()*10000 gives a random number between 0 and 10000 and (int)(drand48() * 10000 ) ranges from 0 to 9999 (including 9999 or an integer number in scale [0 9999]) |
| New Reply |
| Tags |
| segmentation fault, structure |
| Thread Tools | |
Similar Threads for: segmentation fault (core dumped) C error for structures
|
||||
| Thread | Forum | Replies | ||
| segmentation fault 11... help? | Engineering, Comp Sci, & Technology Homework | 1 | ||
| [Fortrran] Some help with a code error: Segmentation Fault | Programming & Comp Sci | 4 | ||
| Segmentation fault using C++ | Programming & Comp Sci | 8 | ||
| Segmentation Fault | Programming & Comp Sci | 9 | ||
| Segmentation Fault !!! | Computing & Technology | 5 | ||