Linux環境でansi Cでプログラミングしていますが、gccコンパイラを使用しています。 は、私は次のコードstructにintメンバーを整数に代入するときのCプログラミングのセグメンテーションエラー
#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
とここで働いていますか?私はデバッガを走らせたが、あまり役に立たなかった。
'ポジション*のposition'が初期化されていないポインタです。逆参照したい場合は、おそらく 'malloc'のメモリによって、どこか有効なものにする必要があります。 –