在下面的代码中,fizz正确打印,但buzz不正确。在这里使用char数组有什么问题,或者以什么方式使用它是错误的?
#include <stdio.h>
int main() {
int i;
char *fizz = "fizz";
char buzz[4] = "buzz";
for(i = 1; i <= 100; i++) {
if(!((i %3 == 0) || (i%5 == 0)))
printf("%d", i);
if(i%3 == 0)
printf("%s", fizz);
if(i%5 == 0)
printf("%s", buzz);
printf("\n");
}
}
最佳答案
两个字符串实际上都不是4字节长。C字符串是以NUL结尾的,因此它们的长度总是以字符为单位,加上'\0'
字符的长度。因此,您应该将buzz
的声明更改如下:
char buzz[5] = "buzz";
但是,还要注意,使用字符串文字初始化时显式声明变量的长度不是必需的。你只要把号码忘了就行了。
char buzz[] = "buzz";