C 字符串不打印
在这个程序中,我必须生成一个随机数,如果这个数是1,我必须以可变颜色存储绿色,如果是0,我必须存储红色,然后打印结果C 字符串不打印,c,string,C,String,在这个程序中,我必须生成一个随机数,如果这个数是1,我必须以可变颜色存储绿色,如果是0,我必须存储红色,然后打印结果 #include<stdio.h> #include<time.h> int main () { int rn; rn=Switch(); Display(rn); return 0; } int Switch() { int rn; srand(time(NULL)); rn=rand()%2;
#include<stdio.h>
#include<time.h>
int main ()
{
int rn;
rn=Switch();
Display(rn);
return 0;
}
int Switch()
{
int rn;
srand(time(NULL));
rn=rand()%2;
return rn;
}
int Display(int rn)
{
char colour[5];
if (rn==1)
{
colour[5]="green";
}
else
{
colour[5]="red";
}
printf("Random number : %d\nColour : %c",rn,colour);
}
但当我运行程序时,它会打印随机数,而不会打印颜色
colour[5]="green";
及
由于多种原因,导致访问数组颜色超出范围,并试图将字符串文字指定给字符
您实际上不需要数组。只需使用指针:
char *colour;
if (rn == 1) {
colour="green";
} else {
colour="red";
}
printf("Random number : %d\nColour : %s", rn, colour);
将数组声明更改为字符颜色[32]={0} 使用strcpy颜色,绿色;代替颜色[5]=绿色;红色也是如此
打印时使用%s而不是%c..将字符串打印到数组的第五个字符中,该字符不是数组的一部分。。。。小心那些鼻魔。此外,您的数组对于字符串来说也太小了。您需要在启用警告的情况下编译-Wall for gcc/clang,然后修复所有警告。@KamiKaze我该怎么做?然后在启用警告的情况下编译。这会在您写入的字符数超过数组中的插槽数时产生另一个问题。是的,在绿色的情况下,数组大小需要增加,对吗?我建议您在答案中写下这一点,以使其正确。
char *colour;
if (rn == 1) {
colour="green";
} else {
colour="red";
}
printf("Random number : %d\nColour : %s", rn, colour);