c - 二维字符数组中字符的额外打印

标签 c multidimensional-array

我正在尝试使用这段代码依次打印出 2d char 数组的每个元素:

#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;
    }

但是输出是:

ABCDEFGHI 
BCDEFGHI 
CDEFGHI 
DEFGHI 
EFGHI 
FGHI 
GHI 
HI 
I

代替:

A
B
C
D
E
F
G
H
I

而且我不知道如何修复它。我环顾四周,未能找到这个特定问题的任何答案。任何建议都会很棒。谢谢。

最佳答案

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

printf("%c \n", positions[i][j]);

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

问候

关于c - 二维字符数组中字符的额外打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63542569/

相关文章:

c++ - 如何使用 CLR 创建一个混合了 C 和 C++ 的 Visual Studio 项目?

c - 未处理的异常错误 C 编程

c#按钮点击事件。从二维数组中提取坐标

c++ - 将多维数组传递给 function_111

javascript - 属于数组中同一字段的值的累积和

c++ - 创建二维动态数组的函数

c++ - 将空数据写入非阻塞套接字会导致 epoll_wait 挂起

c - 如何在 ANSI C 程序中返回字符串数组?

c - 将单词读入链接列表

JavaScript——控制二维动态数组