2013-05-04 3 views
1

У меня есть проблема с моей программой, написанной на C. Действительно, он останавливается на линии e->identifiant=0;C, установить переменную в структуре

Код:

struct Evenement* e=(struct Evenement*)(malloc(sizeof(struct Evenement))); 
e->identifiant=0; 

с:

struct Evenement{ 
int identifiant; 
char titre[100]; 
struct Creneau creneau; 
char lieu[50]; 
char description[500]; 
}; 

У вас есть идея?

+1

Удалось ли «malloc»? Вам не нужно указывать возвращаемое значение в программе на C. –

+0

Как это остановить? Получается ли ошибка сегментации? Если это @CarlNorum, вероятно, на правильном пути, так как malloc не удалось. Вы должны убедиться, что 'e' отличен от нуля (не NULL), прежде чем пытаться назначить ему. –

+0

Действительно, e является NULL после malloc ... и я не понимаю, почему ... Malloc правильно пишет ... нет? – user1360503

ответ

1

Я компиляции и запуска этого:

#include <stdio.h> 
#include <stdlib.h> 

struct Evenement{ 
int identifiant; 
char titre[100]; 
char lieu[50]; 
char description[500]; 
}; 

int main() 
{ 
    struct Evenement* e=(struct Evenement*)(malloc(sizeof(struct Evenement))); 
    e->identifiant = 0; 
    printf("%d", e->identifiant); 
    return 0; 
} 

и нет никаких проблем. Можете ли вы сказать нам, что такое ошибка?


Я удалил struct Creneau creneau; линия, beacuse нет описания. Это может быть проблема?

+0

Даже если я удалю struct Creneau creneau; Проблема все еще существует ... – user1360503

+1

@ user1360503: в вашем коде проблема не в строках, которые вы показываете; это находится в остальной части программы. Строки, которые вы показываете, просто там, где проблема обнаруживается. С проблемами с повреждением памяти (что, скорее всего, будет, альтернативой является то, что где-то вы выделили сложный массив, который съел всю доступную память), причина проблемы часто далека от того, где обнаружена проблема, которая является одной из характеристик, которая затрудняет их обнаружение. –

+0

Как говорит Джонатан, проблема не в этой части кода. Если вы можете отделить методы или проблемы в своей программе и протестировать их отдельно; вы сможете обнаружить, где проблема. – sha1

Смежные вопросы