如何在C中将1d数组设置为2d数组元素

时间:2013-05-09 11:08:00

标签: c arrays c99

我需要这样的东西:

char font[128][8] = {{0}};

font[0][] = {0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0};
font[1][] = {...}

但是在c99中我得到了'{'token'之前的预期表达式。请帮忙。

3 个答案:

答案 0 :(得分:1)

在声明数组时,您只能使用初始化列表({...}),这就是您收到错误的原因。您无法为数组指定值,font[0]是{a char[])。

您有3个选项:


  • char font[128][8] = {
      {0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0};
      {...}
     }
    
  • 将每个值分别分配给数组中的元素:font[0][0] = x,...,font[127][7] = y(即使用循环)。

  • memcpy一次阻止来自uint64_tsizeof(font[0]) = 8),或者您可以整齐/有效地存储数据。

可能还值得注意的是,二进制常量是C扩展名,并且char已签名,如果您使用的是无符号数据,则应该明确使用{{1} }。

答案 1 :(得分:0)

char font[128][8] = {
    {0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0},//font[0]
    /*{...}*///font[1]
};

答案 2 :(得分:0)

尝试一下:

    char font[128][8] = {{0}};  
    char a[8] = {0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0};
    //Take array a to store values 

    for(int i = 0;i<8;i++)
    font[0][i] =  a[i];
    //Assign value of a to font