Задача программы - вытолкнуть все данные из структуры в стек, используя memcpy
. После выполнения он успешно вводит данные в структуру, но достигает ошибки сегментации, когда дело доходит до функции push()
.Нажатие данных из структуры в стек в C
Вот код:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <mem.h>
typedef struct STD {
char ime [50];
int fn;
float usp;
} STD;
typedef struct STACK {
STD *s;
STACK *next;
} STACK;
int push (void *a, int siz, STACK **sst) {
STACK *snew;
snew = (STACK *) malloc (siz + 1);
memcpy (snew->s, a, siz);
snew -> next = *sst;
*sst = snew;
}
int main() {
STACK *st;
STD ss;
printf ("Vyvedi ime");
gets (ss.ime);
ss.ime[49] = 0;
printf ("Vyvedi fn");
scanf ("%d", &ss.fn);
printf ("Vyvedi usp");
scanf ("%f", &ss.usp);
push (&ss, sizeof(ss) , &st);
system ("pause"); }
Не знаю, если это имеет значение, я использую DevC как компилятор.
И я ожидаю, что вы будете просить вопрос в любую минуту ... – abelenky 2010-12-02 18:59:03
@abelenky - это довольно ясно, что ошибка сегментации является проблема – 2010-12-02 19:08:56
@Steve Townsend: большинство обычных пользователей SO получили очень ясно что им больно, «задавайте вопросы типа« Код-дамп, пожалуйста, исправьте ». Мы все хотим увидеть с плаката: Что вы ожидали? Что вы на самом деле получаете? Что вы пробовали и где вы застряли?Когда люди задают реальные вопросы, легче дать реальные ответы. – abelenky 2010-12-02 19:20:30