Ищите похожий ответ, но ничего не пытаюсь работать. У меня проблема, я хочу изменить значение word
, вызвав функцию void init()
, но когда я печатаю слово, оно не работает.C, указатели и функции void
Прошли много часов на этом, поэтому любая помощь будет оценена по достоинству.
int main(void)
{
char word[MAX_WORD_LEN + 1];
unsigned wrongGuesses = 0;
int guessedLetters[ALPHABET_SIZE] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
init(&word);
printf("%s", word);
displayWord(word, guessedLetters);
guessLetter(word, guessedLetters);
return EXIT_SUCCESS;
}
void init(char* word)
{
int randValue;
char* randWord;
const char* words[NUM_WORDS] = {
"array", "auto", "break", "case", "cast",
"character", "comment", "compiler", "constant", "continue",
"default", "double", "dynamic", "else", "enum",
"expression", "extern", "file", "float", "function",
"goto", "heap", "identifier", "library", "linker",
"long", "macro", "operand", "operator", "pointer",
"prototype", "recursion", "register", "return", "short",
"signed", "sizeof", "stack", "statement", "static",
"string", "struct", "switch", "typedef", "union",
"unsigned", "variable", "void", "volatile", "while"
};
int seed;
seed = (time(NULL));
srand(seed);
randValue = rand() % NUM_WORDS;
randWord = words[randValue];
printf("%s", randWord);
*word = randWord;
}
Ваш главный должен иметь следующую подпись: 'Int основной (INT ARGC, символ * ARGV [])'. Особенно для C++ (на который вы отметили этот вопрос, так что я предполагаю, что для этого есть причина). – celticminstrel
Помимо этой проблемы, эта вариация таблицы слов значительно облегчает перенос сводного обслуживания, не нарушая ничего: 'const char * words [] = {" array "," auto ",' ... ', "в то время как"}; #define NUM_WORDS (sizeof (words)/sizeof (слова [0])) ' – wallyk
' word' уже типа 'char *', поэтому вам не нужно передавать его в 'init' как' & word', потому что это тоже неправильно !! – ThunderWiring