Ich programmiere in ansi C in einer Linux-Umgebung, ich benutze GCC-Compiler. Ich habe den folgenden CodeC-Programmierung, Segmentierung Fehler beim Zuweisen von int-Member in struct zu Integer
#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
Grundsätzlich ist das Programm wird eine Benutzereingabe für einige Werte und speichern sie in der Lage, Struktur, habe ich einige Online-Forschung tat und fand heraus, dass ich diese position->y = int
verwenden können, aber warum nicht funktioniert es hier mit strtol
? Ich lief den Debugger und es half nicht viel
'Position * position' ist ein uninitialised Zeiger. Sie müssen darauf hinweisen, irgendwo gültig, möglicherweise durch "malloc" Speicher, wenn Sie es dereferenzieren möchten. –