如何在C中创建一个二维数组“-”

xghobddn  于 2023-01-20  发布在  其他
关注(0)|答案(4)|浏览(140)

我想创建一个如下所示的二维数组“-”

我尝试了这样的东西,但它没有工作(为10乘10)

char table[10][10];

for (int i = 0; i < 10; i ++){
    for (int j = 0; j < 10; j++)
    {
        strcpy(table[10][i], "-");
    }
}
qco9c6ql

qco9c6ql1#

整个二维阵列?
如果不是字符串,使用memset(table, '-', sizeof table);填充每个字节。不需要for循环。

iqjalb3h

iqjalb3h2#

char table[10][10];

for (size_t i = 0; i < sizeof(table) / sizeof(table[0]); i ++){
    for (size_t j = 0; j < sizeof(table[i]); j++)
    {
        table[i][j] =  `-`);
    }
}

memset(table, '-', sizeof(table))
如果你想有10个字符串(以空字符结尾)

for (size_t i = 0; i < sizeof(table) / sizeof(table[0]); i ++){
    memset(table[i], `-`, sizeof(table[i]) - 1);
    table[i][sizeof(table[i]) - 1] = 0;
}
okxuctiv

okxuctiv3#

这并不是为了可移植性而提倡的,但是如果您使用的是GCC,则可以使用下面的GNU extension在声明处进行初始化

char table[10][10] = { [0 ... 9] = {[0 ... 9] = '-'} };

Demo
(公然剽窃this answer

kwvwclae

kwvwclae4#

#include <stdio.h>

int main() 
{

char table[10][10];

for (int i = 0; i < 10; i ++)
{
    for (int j = 0; j < 10; j++)
    {
        table[i][j]= '-';  //instead of using strcpy we can assign values like this//
    }
}
for (int i = 0; i < 10; i ++)
{
    for (int j = 0; j < 10; j++)
    {
        printf("%c",table[i][j]); //It is used to print characters//
    }
    printf("\n"); //It is used to have a new line//
}  
return 0;
}

相关问题