該程序的任務是使用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