【发布时间】:2021-01-08 14:49:33
【问题描述】:
我正在学习使用 C。我有这样的代码:
int main() {
FILE *fp;
char usernames[8][20] = {"Lebron","Gasol","Davis","Schroder","KCP","Jr Smith"};
int i =0;
usernames[6][20] = 'Danny';
fp=fopen("out.txt","w");
for(i=0; i<7; i++) {
fprintf(fp,"%s\n",usernames[i]);
}
}
在我的文本文件中,没有写“Danny”。我不能添加像第 3 行这样的元素吗?定义后如何将元素添加到数组中?
【问题讨论】:
-
请注意,
usernames[6][20]中的20不是有效的数组下标——它违反了数组边界。元素从 0 到 19。还要注意'Danny'是实现定义的多字符常量,而不是字符串。 -
一般
char a[n]; a[n] = x正在尝试写入越界。当您分配给usernames[6][20]时,您会通过超出数组边界的写入来调用未定义的行为。而'Danny'并不是你想的那样。