设置2d数组值时读取字符串字符时出错

时间:2016-10-30 10:36:32

标签: c multidimensional-array

我有3个文件:
1. main.c
2. testarray.c
3. header.h

我想创建全局变量名'arrayTwoD',它是一个二维数组。在'testarray.c'我想初始化数组并用's'填充值。该函数将在'main.c'上调用。

这是我的代码:

headerfile.h

#include <stdio.h>

void iniTwoDArray();

/*global variable 2d array not sure im doing correctly or not*/
extern char *arrayTwoD[2][3];


testarray.c

#include "headerfile.h"
#include <stdio.h>

char *arrayTwoD[2][3];

void iniTwoDArray() {
   /*not sure if this is a good way to set the values */
    memset(arrayTwoD, 's', sizeof(arrayTwoD[0][0]) * 2 * 3);
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%c", arrayTwoD[i][j]);
        }
        printf("\n");
    }
}


main.c

#include "headerfile.h"

int main() {
    iniTwoDArray();
    return 0;
}

在调试时,在testarray.c中,下面的行在执行后继续显示“读取字符串字符时出错”。错误显示在下面的屏幕截图中。我刚刚开始学习C,如果你能用外行的话向我解释,我真的很感激。

memset(arrayTwoD, 's', sizeof(arrayTwoD[0][0]) * 2 * 3);

enter image description here

1 个答案:

答案 0 :(得分:0)

调试器试图提供帮助\聪明 - 它看到你的字符数组并假设它是字符串。 尝试做手表而不是查看自动窗口,它可能会更好地解码您的变量\

仅供参考:你可以做memset(arrayTwoD,&#39; s&#39;,sizeof(arrayTwoD))