사용자 입력을 C에서 문자열 배열로 분할하려고합니다. 시간의 40 %를 사용합니다. 때로는 사용자가 문자열을 입력하고 모두 예상대로 진행됩니다. 때로는 동일한 문자열이 입력되고 배열의 내용이 달라집니다. 나는 이유를 알 수 없다.일관성없는 배열 내용을 C
void run_game(struct board *made_board){
char **user_command;
user_command = (char **)malloc(sizeof(char *)*4);
user_command = split_string(user_command);
printf("Input1: %s\n", user_command[0]);
printf("Input2: %s\n", user_command[1]);
printf("Input3: %s\n", user_command[2]);
}
char** split_string(char **user_input){
char user_command[10];
char *word;
int word_counter = 0;
fgets(user_command, 10, stdin);
while(strlen(user_command)>9){
fgets(user_command, 10, stdin);
}
word = strtok (user_command," ");
user_input[word_counter] = word;
word_counter++;
while (word != NULL){
word = strtok (NULL, " ");
user_input[word_counter] = word;
word_counter++;
}
return user_input;
}
입력 1, 입력 2 및 입력 3은 때때로, 때때로 임의의 문자 일 무슨는 fgets에서 제공 될 것입니다. 이것은 정확히 동일한 입력에 대해 두 가지 다른 동작입니다.
[초기화되지 않은 포인터에 데이터를 복사 할 때 왜 신비한 충돌이 발생하거나 "세분화 오류가 발생합니까?"(http://stackoverflow.com/questions/37549594/why-do-i-get-a)를 참조하십시오. - i-copy-data-to-an-u 일 때 이상한 - 크래시 또는 세그멘테이션 오류. – Lundin