我正在寫一個小型的C程序來測試一個概念,我有一些問題。首先,這裏是我的所有代碼:sscanf分段錯誤
#include <stdio.h>
#include <string.h>
char one[] = "Figure A 200 200 =\0";
char two[] = "Figure B 300 200 =\0";
int main(void)
{
char buffero[300];
char buffert[300];
memset(buffero, 0, sizeof(buffero));
memset(buffert, 0, sizeof(buffert));
int * doubleo = 0;
int * doublet = 0;
sscanf(one, "%s %s %d %d ",buffero, buffert, doubleo, doublet);
printf("%s %s %d %d", buffero, buffert, *doubleo, *doublet);
memset(buffero, 0, sizeof(buffero));
memset(buffert, 0, sizeof(buffert));
sscanf(two, "%s %s %d %d ", buffero, buffert, doubleo, doublet);
printf("%s %s %d %d", buffero, buffert, *doubleo, *doublet);
};
它已經成爲了一些我試圖實現修復,但不是稍微令人費解的所有可怕的。
它編譯,但是當我運行它時,我得到一個分段錯誤。
GDB報告:
#3 0x0000000000400683 in main() at mis_test.c:15
15 sscanf(one, "%s %s %d %d ",buffero, buffert, doubleo, doublet);
能有人給一些真知灼見嗎?我對C很陌生我知道這是一個非常非常簡單的問題,它把我看在臉上,但我似乎無法得到它。任何幫助表示讚賞。
你'double'指針爲NULL。他們需要有效的int值。將它們更改爲'int'並將它們的*地址*傳遞給sscanf調用ex:'&doubleo' – WhozCraig