【发布时间】:2017-04-11 06:05:54
【问题描述】:
下面是一个名为 scrabble.c 的程序的代码片段,该程序用于玩游戏的简化版本。用户被处理 7 个随机字符,然后被告知使用这些字符输入一个单词。我遇到了接受用户输入并将其存储在数组中的函数的问题。
这个函数应该提示用户输入一个单词,然后读取它,并将它逐个字符地存储在数组“word”中。该函数还应返回用户输入的单词的大小(输入的字母数)。
int read_word(char word[7], int max_size_word)
{
int c = 0, input_count = 0;
printf("Please enter your word : ");
char user_input = getchar();
for(c = 0; c < max_size_word; c++)
{
if(user_input != '\n')
{
word[input_count] = user_input;
input_count++;
printf("input_count = %d, letter entered = %c\n", input_count,
user_input);
}
else if(user_input == '\n')
{
return input_count;
}
user_input = getchar();
}
return input_count;
// 错误发生在这里。错误:检测到堆栈粉碎。/scrabble 终止了已中止的核心转储。”
为什么会检测到堆栈粉碎?
}
int main(void)
{
int t;
int letter_set[7] = {0};
char word[7];
int size_letter_set = 100;
int num_letters = 7;
generate_letter_set(&letter_set[7], size_letter_set, num_letters);
read_word(&word[7], 7);
printf("printing word : ");
for(t=0; t < 7; t++)
{
printf("%c", word[t]);
}
printf("\n");
return 0;
}
【问题讨论】:
标签: c