【发布时间】:2021-02-03 04:39:41
【问题描述】:
为什么 gcc 不允许我使用 char 维度 >15?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char alphabet[]={'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
int dim_alph;
dim_alph=strlen(alphabet);
printf("%s has %d characters\n", alphabet, dim_alph);
return 0;
}`
它在字符串和维度上都给我无效的输出(如果我停在“P”字符而不是“O”字符)
【问题讨论】:
-
您的 char 数组不是 c 字符串,缺少 nul 终止符。
-
您需要添加 '\0' 作为字符。它是空终止符
-
你应该使用
char alphabet[] = "ABC...Z";。 -
除此之外,“维度”在这里是错误的词。数组的维度,无论其长度如何,都是1。
-
@KonradRudolph 好的,谢谢!
标签: c char printf undefined-behavior c-strings