【发布时间】:2016-04-17 06:27:39
【问题描述】:
我对 C 很陌生,我不理解这种行为。在打印这个空数组的长度时,我得到 3 而不是 0。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct entry entry;
struct entry{
char arr[16];
};
int main(){
entry a;
printf("%d\n",strlen(a.arr));
return 0;
}
我在这里不明白什么?
【问题讨论】:
-
你还没有初始化变量,所以数组可以包含任何东西;它根本不需要空终止。此外,打印
strlen(a.arr)的正确格式是%zu,因为strlen()返回size_t。 -
一个安全的初始化它的方法是
a.arr[0] = 0;,这样你就有一个零长度的字符串。