我在c中给字符串数组赋值时遇到了问题。代码是一个刽子手游戏的一部分
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main()
{
srand(time(0));
int random = rand() % 5;
char *sWords[] = {"banana", "apple", "GOAT", "jordan", "zhiki"};
printf("%s\n", sWords[random]);
char *sTempWord = sWords[random];
char *sTempArr;
for (int i = 0; sTempWord[i] != '\0'; i++)
sTempArr[i] = '_';
for (int i = 0; strlen(sTempArr); i++)
printf("%c ", sTempArr[i]);
}
没有错误,当我运行程序时,它就退出了。计划是从列表中获得随机单词,创建一个具有随机选择单词长度的临时数组,并将所有元素赋值为“_”。
另外,当我尝试使用常量值创建数组时,(如char sTempArr[len]
,其中len=strlen(sTempWord)
,它表示:表达式必须有常量值
2条答案
按热度按时间eoxn13cs1#
当声明一个数组时,编译器需要在编译时知道长度(例如,值不能是变量)。
你可以创建一个初始的空数组,其中包含已知数量的元素(你需要确保它足够大,可以容纳
sWords
中的任何单词,包括空终止符):或者,您可以在运行时使用
malloc()
这样的命令分配动态内存:它们不一样。
ovfsdjhp2#
1.未初始化指针。
1.不能以空字符终止字符串
1.由于字符串以空字符结尾,因此不能调用
strlen
一个二个一个一个