2012-11-27 26 views
1

我前主声明的结构:2D int数组withing一个结构 - Visual C

struct roomData 
{ 
    float widthFeet, widthInch; 
    float lengthFeet, lengthInch; 
    char roomName[100]; 
    int roomNumberOfType; 
    char roomType[6]; //char of room type 
    int roomStock[101][6]; //for storing each room stock types 
    int roomHasStock; //if the room has a stock avaliable 
    int roomStockCount; //how many stocks the room has 
    float area; // sq ft 
    float rentalRate; 
    float profitsPerRoom; 
    float netProfit; 
    float grossProfit; 
}; 

内部主,我声明该结构与此:

int main(void) 
{ 
struct roomData rooms[MAXROOMS+1] = {0}; //struct for rooms(+1 for temp swapping in sorts) 
} 

以后我通过结构和几其它变量的函数与此代码在主:

 fillRoomData(n, x, array, rooms, 1); 

和fillRoomData功能是这样的:

void fillRoomData(int n, int x, struct fileInput array[300], struct roomData rooms[MAXROOMS], int check)//NEED TO ERROR CHECK 
{ 
    if(check == 1) //for stock values in room 
    { 
     char * word4; //for strTok 
     word4 = strtok(array[n].input," "); //stockType 
     rooms[x].roomStock[a][0] = atoi(word4); //sores stock number 
     word4 = strtok(NULL, " "); //stockCount 
     rooms[x].roomStock[a][1] = atoi(word4); //sores stock inventory 
.... 

} 

这是错误的IM从GCC获得RDB

Program received signal SIGSEGV, Segmentation fault. 
0x000000338f23473a in ____strtoll_l_internal() from /lib64/libc.so.6 
(gdb) backtrace 
#0 0x000000338f23473a in ____strtoll_l_internal() from /lib64/libc.so.6 
#1 0x000000338f231bf2 in atoi() from /lib64/libc.so.6 
#2 0x0000000000406ed9 in fillRoomData (n=29, x=0, array=0x7ffffffefcc0, 
    rooms=0x7ffffffd2fe0, check=1) at amp6572Lab4.c:1420 
#3 0x0000000000400fde in main() at amp6572Lab4.c:279 
(gdb) frame 2 
#2 0x0000000000406ed9 in fillRoomData (n=29, x=0, array=0x7ffffffefcc0, 
    rooms=0x7ffffffd2fe0, check=1) at amp6572Lab4.c:1420 
    1420    rooms[x].roomStock[a][b] = atoi(word4); //stores 

非常感谢所有帮助!

+0

你没有显示此足够的代码是有用的。告诉我们这个结构是如何初始化和使用的;在代码中发生seg故障。 – tillerstarr

+0

@tillerstarr感谢您的快速回复 ,我发布了一个答案,我自己的问题更多的代码。 – user1856602

+0

word4实际上有一个值吗? – tillerstarr

回答

0

试着改变你的主要以:

struct roomData rooms[MAXROOMS+1]; 
+0

多数民众赞成在最初,那么我看到了错误,并改变它,仍然没有好处:/ – user1856602

+0

什么是MAXROOMS定义为? – tillerstarr

+0

你能访问它吗? – tillerstarr