字符串不打印

时间:2016-12-14 09:08:13

标签: 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;
    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);
}

但是当我运行该程序时,它会打印随机数,但不打印颜色。

2 个答案:

答案 0 :(得分:4)

colour[5]="green";

colour[5]="red";
由于多种原因,

导致undefined behaviour(您正在边界之外访问数组colour并尝试将字符串文字分配给char)。

你真的不需要一个阵列。只需使用指针:

char *colour;
if (rn == 1) {
    colour="green";
} else {
    colour="red";
}
printf("Random number : %d\nColour : %s", rn, colour);

答案 1 :(得分:0)

将数组声明更改为char colour[32] = {0};

使用strcpy(colour, "green");代替colour[5]="green";,类似于红色

打印时使用%s代替%c ..