C编程,在将struct中的int成员赋值为整数时出现分段错误

时间:2016-04-08 10:37:59

标签: c gcc struct segmentation-fault strtol

我在Linux环境中使用ansi C进行编程,我正在使用gcc编译器。 我有以下代码

#define USER_IN_LEN 15
#define EXTRA_SPACES 2
#define DELIMS " ,\n"

//define the sruct
typedef struct position
{
    int x;
    int y;
} Position;


char choice[USER_IN_LEN + EXTRA_SPACES];
//define pointers for strtok and strtol
char *tok;
char *end;

//create pointer o type Position
Position *position;
//get user input with fgets
fgets(choice, USER_IN_LEN, stdin);

//tokenize
tok = strtok(choice, DELIMS);
tok = strtok(NULL, DELIMS);
position->x = (int)strtol(tok, &end, 0); //error, segmentation fault
tok = strtok(NULL, DELIMS);
position->y = (int)strtol(tok, &end, 0);//error, segmentation fault

基本上,程序获取某些值的用户输入并将它们存储在位置结构中,我已经在线进行了一些研究,发现我可以使用这个position->y = int,但为什么它不能与strtol一起使用1}?我运行调试器并没有多大帮助

1 个答案:

答案 0 :(得分:1)

position是指向结构的指针。您永远不会将position设置为任何值,因此它可能指向任何位置! - 即你正在调用未定义的行为。

快速修复:

Position instance;
position = &instance;