Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何向二维数组添加字符?_C++_Arrays_Pointers_Multidimensional Array - Fatal编程技术网

C++ 如何向二维数组添加字符?

C++ 如何向二维数组添加字符?,c++,arrays,pointers,multidimensional-array,C++,Arrays,Pointers,Multidimensional Array,我的代码: FILE * file; file = fopen("c://catalog//file.txt", "r"); int m,n; //size of 2d array (m x n) fscanf(file, "%d", &m); fscanf(file, "%d", &n); fclose(file); printf("Size: %d x %d\n", m, n); // create 2d array char **TAB2 = new char*[m

我的代码:

FILE * file;

file = fopen("c://catalog//file.txt", "r");
int m,n; //size of 2d array (m x n)
fscanf(file, "%d", &m);
fscanf(file, "%d", &n);
fclose(file);

printf("Size: %d x %d\n", m, n);

// create 2d array 
char **TAB2 = new char*[m];
for (int i = 0; i < m; i++)
    char *TAB2 = new char[n];

// display 2d array 
for (int i = 0; i < m; i++){
    for (int j = 0; j < n; j++)
    {
        printf("%c ", &TAB2[i][j]);
    }
    printf("\n");
}
我尝试过:TAB2[0][0]=“s”*&TAB2[0][0]=“s”;对于一个字符,这不起作用


可能我用的指针不好(?)。有人帮我吗?

动态分配数组错误

char **TAB2 = new char*[m];
for (int i = 0; i < m; ++i)
    TAB2[i] = new char[n];

重要环节:


  • 动态分配数组错误

    char **TAB2 = new char*[m];
    for (int i = 0; i < m; ++i)
        TAB2[i] = new char[n];
    

    重要环节:


  • 数组的分配似乎不正确;应该是这样的

    char **TAB2 = new char*[m];
    for (int i = 0; i < m; i++)
        TAB2[i] = new char[n];
    
    char**TAB2=新字符*[m];
    for(int i=0;i
    阵列的分配似乎不正确;应该是这样的

    char **TAB2 = new char*[m];
    for (int i = 0; i < m; i++)
        TAB2[i] = new char[n];
    
    char**TAB2=新字符*[m];
    for(int i=0;i
    我更正了,这应该是“文件”指针的错误使用。for循环中用于为每行字符分配内存的部分已经错误。应该是类似于TAB2[i]=新字符[n];或者每次分配一个新的字符数组时,将指针*TAB2向前移动打印内容也错误。您正在将地址而不是字符传递给printf。(即移除&)谢谢您的帮助!solvedi更正了,这应该是“文件”指针的错误使用在这里。for循环中用于为每行字符分配内存的部分已经错误。应该是类似于TAB2[i]=新字符[n];或者每次分配一个新的字符数组时,将指针*TAB2向前移动打印内容也错误。您正在将地址而不是字符传递给printf。(即移除&)谢谢您的帮助!解决了,哦,这是我在第一个链接@sehe中的照片!哈哈。顺便说一下,好的链接,我正在编辑。欢迎@adfgvx。请务必查看我问题中的链接@萨马拉斯修正了第一个删除:-)一个bug@Diego?请告诉我更多。或者哦,这是我在第一个链接@sehe中的照片!哈哈。顺便说一下,好的链接,我正在编辑。欢迎@adfgvx。请务必查看我问题中的链接@萨马拉斯修正了第一个删除:-)一个bug@Diego?请告诉我更多。
    char **TAB2 = new char*[m];
    for (int i = 0; i < m; i++)
        TAB2[i] = new char[n];