在 2D 字符数组中额外打印字符

SOL*_*LSD 2 c multidimensional-array

我正在尝试使用这段代码依次打印出二维字符数组的每个元素:

#include <stdio.h>
#include <stdlib.h> 
char positions[3][3] = {'A', 'B', 'C', 'D', 'E', 'F','G', 'H', 'I'};
    int main(){
        for(int i = 0; i < 3; i++){
            for(int j = 0; j < 3; j++){
                printf("%s \n", &positions[i][j]);
            }
        }
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

但输出是:

ABCDEFGHI 
BCDEFGHI 
CDEFGHI 
DEFGHI 
EFGHI 
FGHI 
GHI 
HI 
I
Run Code Online (Sandbox Code Playgroud)

代替:

A
B
C
D
E
F
G
H
I
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决它。我环顾四周,没有找到这个特定问题的任何答案。任何建议都会很棒。谢谢你。

小智 5

您的 printf 确实需要 %s ,这会强制将 char 数组转换为从第一个条目开始的字符串。尝试跑步

printf("%c \n", positions[i][j]);
Run Code Online (Sandbox Code Playgroud)

打印出字符。看看会发生什么;)

你好