作者:穿过a黑夜_440 | 来源:互联网 | 2022-12-06 18:48
我正在尝试创建一个字符串数组,并打印它.听起来很简单,但对我来说没有任何作用.
首先尝试的是:
int main(){
char ls[5][3]={"aba","bab","dad","cac","lal"};
printf("Das hier: %s", ls[1]);
return 0;
}
但输出是:
Das hier: babdadcaclal a
即使它应该只是:
bab
接下来的尝试是经过一些搜索,使用:
char* ls[5][3]=.....
代替.这打印:
Das hier: pP@
我有一天正在寻找这个问题,我猜,问题可能是我的编译器,但我不确定...
希望有人知道该怎么做,因为我没有想法.我正在使用gcc编译器,如果这有点重要.
1> Yunnosch..:
这"bab"
是一个在末尾有一个不可见终止的字符串'\0'
,即大小为4.
要修复,请更改为
char ls[5][4]={"aba","bab","dad","cac","lal"};
然后,为了提高可维护性,使用David C. Rankins评论的提议,制作一个隐式大小的TLA数组:
char ls[][4]={"aba","bab","dad","cac","lal"};
要使用它,请使用此变量来设置循环:
size_t n;
n = sizeof ls / sizeof *ls;