c++ - 打印一行二维字符数组 (C++)

标签 c++ arrays multidimensional-array

所以我已经声明了一个二维数组并希望逐行显示它的行。但是当我执行以下代码时,我看到矩阵中的所有行都从我需要的行开始。

代码:

#include<iostream.h>
#include<conio.h>
#include<stdio.h>

char topics[3][10]={"Literature","Science---","Sports----"};

void main()
{
    clrscr();
    cout<<topics[0][0]<<endl<<topics[1][0]<<endl<<topics[2][0]<<endl;
    puts(topics[0]);
    cout<<endl;
    puts(topics[1]);
    getch();
}

输出:

L    
S   
S   
LiteratureScience---Sports----         
Science---Sports----

我希望我的程序做的是当执行 puts(0) 时,只应显示“文学”,而当执行 puts(1) 时,只显示“科学---”。

我是初学者。请建议我应该做哪些更正。谢谢。 :)

最佳答案

声明:

char topics[3][10]={"Literature","Science---","Sports----"};

被编译器当作:

char topics[3][10]={"Literature\0","Science---\0","Sports----\0"};

这意味着这些字符串中的每一个都由 11 个字符组成。

因此您需要将 topics[3][10] 更改为 topics[3][11]

关于c++ - 打印一行二维字符数组 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42184378/

相关文章:

c++ - .exe 与 .dll 作为一个程序的模块

c++ - << 运算符重载和模板特化

c++ - 返回数组并在另一个函数中使用它

perl - 在 Perl 中修改然后切片未知大小的二维数组

algorithm - 如何找到二维矩阵中的 Blob 数?

multidimensional-array - 可变大小数组的 Fortran 数组

c++ - 在Boost Graph Library中选择给定顶点的随机进出邻居的有效方法?

c++ - 在 Windows 7 上静默关闭 VS 2008

arrays - 不可变值只有可变成员

c - 将指针的一个元素分配给同一指针的另一个元素