gpt4 book ai didi

c - 为什么我不能将字符串保存在 char 数组中?

转载 作者:行者123 更新时间:2023-11-30 17:26:57 25 4
gpt4 key购买 nike

//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);

我只想保存在一个数组中:_ _ _ _ _//每个字母都是一个低条

例如,如果随机单词的长度为 7,则输出将为:_______//7 times _

但是如果我修改 HiddenRandomWord[i] = ' _';//注意在低栏之前添加的空格,输出仍然是 _______,它只是取最后一个字符。

我知道,当它有简单引号时,它仅适用于一个字符,而对于双引号,它适用于多个字符。各种方法都试过了,还是没明白。

最佳答案

这一行

char HiddenRandomWord[length];

应该是

char HiddenRandomWord[length+1];

这也意味着该语句正在数组外部写入

if (i == length) HiddenRandomWord[i] = '\0';

所以你的循环应该是

for (i = 0; i<length; i++) {
HiddenRandomWord[i] = '_';
}

随后

HiddenRandomWord[i] = 0 ;

关于c - 为什么我不能将字符串保存在 char 数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26576261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com