//pick() returns a random word.
char* randomWord = pick(); //save random word in randomWord var
int length = strlen(randomWord); //get length of the randomWord
char HiddenRandomWord[length];
char* stringHiddenRandomWord = HiddenRandomWord;
for (i = 0; i<=length; i++){
HiddenRandomWord[i] = '_';
if (i == length) HiddenRandomWord[i] = '\0';
}
printf("%s", stringHiddenRandomWord);
我只想保存在一个数组中:_ _ _ _ _ //every letter is one low bar
如果随机字的长度为7,则输出为:_______ // 7次_
但是,如果我moidfy HiddenRandomWord[i] = ' _';
//注意到在低位之前添加的空格,输出保持为_______
,它只取最后一个字符。
我知道,当它有简单的引号时,它只适用于一个字符,对于双引号,它适用于多个字符。我已经把所有的方法都转移了,但是我没有得到它。
答案 0 :(得分:0)
这一行
char HiddenRandomWord[length];
应该是
char HiddenRandomWord[length+1];
这也意味着这句话是在数组之外写的
if (i == length) HiddenRandomWord[i] = '\0';
所以你的循环应该是
for (i = 0; i<length; i++) {
HiddenRandomWord[i] = '_';
}
其次是
HiddenRandomWord[i] = 0 ;
答案 1 :(得分:0)
你需要以这种方式使用memset()函数,并且你没有使用stringHiddenRandomword:
char* randomWord = pick();
char* HiddenRandomWord = malloc(strlen(randomWord) + 1);
if (HiddenRandomWord == NULL) perror("malloc");
memset(HiddenRandomWord, '_', strlen(randomWord));
printf("%s//%d\n", HiddenRandomWord, strlen(hiddenRandomWord);
这应该可以解决问题。