首页 > 解决方案 > C编程将char数组复制到char的二维数组

问题描述

在项目的这一部分中,我试图将具有空格的 char 数组复制到 char 的 2D 数组中,我想在空格之前将 1D 数组中的每个字符串分开并将其放入 char 的 2D 数组中。

这是我的代码。

#include <stdio.h>

int main()
{
    int tracker = 0;
    char string[100];
    int b1 = 0;
    int b2 = 0;
    char bitString[100][8];


    printf("Project Zero\n");

    printf("Enter an 8-bit Binary Number!\n");

    gets(string);

    memset(&bitString[0], 0, sizeof(bitString));

    while(string[tracker] != '\0')
    {
        if(!isspace(string[tracker]))
        {
            bitString[b1][b2] = *(string+tracker);
            b2++;
            tracker++;
        }
        else
        {
            b1++;
            tracker++;
            b2=0;
        }
    }


    printf("String is: %s\n",*(bitString+0));
    printf("String is: %s\n",*(bitString+1));

return 0;
}

我的输入是:00001111 00001100

结果是这样的:字符串是:0000111100001100

字符串是:00001100

我不明白为什么 *(bitString+0) 的结果是我输入的所有字符串都没有空格。有人可以向我解释为什么会这样,我能做些什么来解决它。

标签: carrays

解决方案


如果变量 b2 在 while 循环中大于j参数的大小,则会char bitString[i][j];导致bitString[0][8]交互中的分段错误。


推荐阅读