2013-09-21 2 views
0

enter image description hereStruct Массив Bug

Привет, из приведенного выше изображения. Я могу скомпилировать, но программа вылетает во время выполнения. Пожалуйста, сообщите мне, что может быть решением для решения этой проблемы? Спасибо

// structArray.h:

#ifndef __STRUCTARRAY_H_ 
#define __STRUCTARRAY_H_ 


typedef struct _vector{ 
    int* str; 
    int  maskSize; 
    // etc... 
}__attribute__((__packed__)) _vector_t; 

#endif /* _STRUCTARRAY_H_ */ 

**// do_structArray.c** 

#include "structArray.h" 

extern struct _vector_t t; 

void do_structArray (void) { 

int plaintext[2] = {0x05, 0x08}; 

_vector_t t[] = { 
    {plaintext, sizeof(plaintext)}, 
    //{}, 
}; 

    printf("Content: \n%x \n", t[1].str[1]); 
} 

// main : just calling do_structArray 
#include <stdio.h> 
#include <stdlib.h> 

#include "structArray.h" 

extern struct _vector_t t; 

int main(int argc, char *argv[]) {  
do_structArray(); 

    system("PAUSE"); 
    return 0; 
} 

ответ

3

Индексы массивов начинаются с 0 в C. Вы получаете доступ к элементу массива за концом массива. Измените индекс на 0:

printf("Content: \n%x \n", t[0].str[0]); 
+0

Прошу прощения. Программирование поздних ночей действительно влезает в меня. Это верно. Спасибо, что помогли мне. –

4

Вы обращаетесь к t[1], но есть только один пункт в t. Попробуйте printf("Content: \n%x \n", t[0].str[1]).

+0

Спасибо. Я вижу это сейчас. –