该程序的任务是使用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汤森:这么大多数普通用户已经变得很清楚他们厌倦了,“这是我的代码转储,请求解决它”类型的问题。我们都希望从海报中看到:你期望什么?你究竟得到了什么?你有什么尝试,你卡在哪里?当人们提出真正的问题时,提供真正的答案会更容易。 – abelenky 2010-12-02 19:20:30