Я пытаюсь передать массив символов из одной функции в другую. Массив, кажется, переходит во вторую функцию, но содержимое массива, похоже, потеряно, кроме первого элемента? Чтобы обойти это, я попытался продублировать содержимое переданного массива в новый локальный массив в вызываемой функции, но затем возникла проблема передачи нового массива обратно в исходную вызывающую функцию и присвоения его значения первоначально переданному массиву. в массиве.
Скорее всего, мои указатели могут быть полностью неверными, я все еще сталкиваюсь с указателями в C, поэтому я следую советам из IDE, пока он не перестанет выдавать ошибки.
Вот как я вызываю функцию:
wordCheck(charIn, randWord, currentWordStatus);
Массив, который необходимо обновить / изменить, - это массив currrentWordStatus
.
Это содержимое массива, когда он передается в функцию:
А вот как это на самом деле заканчивается в функции:
Вот код моей вызываемой функции:
void wordCheck(char guess, char *wordToGuess, char *currentWordStatus) {
int wordLen = strlen(wordToGuess);
char wordArr[wordLen];
strcpy(&wordArr[0], wordToGuess);
bool found = false;
for (int i = 0; i < wordLen; i ++) {
printf("%c \n", (char)wordArr[i]);
if ((char) wordArr[i] == guess) {
found = true;
currentWordStatus[i] = guess;
}
}
}
Мне было интересно, что я делаю неправильно, я надеюсь изменить функцию напрямую, когда она передается «По ссылке» (я Я знаю, что это указатель на начало массива), вместо того, чтобы переделывать массив внутри функции и передавать его обратно.
Надеюсь, это имеет какой-то смысл?
Большое спасибо