我正在写一个小型的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