我正在用C:
创建一个动态的二维字符数组注意:rows
和columns
是用户输入integers
char** items;
items = (char**)malloc(rows * sizeof(char*));
int i;
for(i = 0; i < rows; i++)
{
items[i] = (char*)malloc(columns * sizeof(char));
}
int j;
for(i = 0; i < rows; i++)
{
for(j = 0; j < columns; j++)
{
items[i][j] = 'O';
}
}
稍后在我的代码中,我尝试覆盖数组中的特定位置:
items[arbitraryRow][arbitraryColumn] = 'S';
但结果是该行/列中的字符现在是'SO'
我做错了什么?
更新: 这就是我打印数组的方式:
int i;
for(i = 0; i < rows; i++)
{
printf("[");
int j;
for(j = 0; j < columns; j++)
{
printf("'%s'", &items[i][j]);
if(j != columns - 1)
printf(", ");
}
printf("]");
printf("\n");
}
答案 0 :(得分:5)
你没有存储你正在存储字符的字符串,所以你只能阅读一个字符,这就是S
我的怀疑是下一个角色是O所以当你把它看作一个字符串时你会得到SO
printf("'%c'", items[i][j]);
答案 1 :(得分:1)
您正在存储字符和读取字符串。尝试从数组中读回字符。
将您的代码更改为:
int i;
for(i = 0; i < rows; i++)
{
printf("[");
int j;
for(j = 0; j < columns; j++)
{
printf("'%c'", items[i][j]);
if(j != columns - 1)
printf(", ");
}
printf("]");
printf("\n");
}