如何在c中扫描二维char数组

时间:2017-05-14 08:27:14

标签: c

我想将字符串(包括空格)输入保存到二维数组。 我的代码是这样的:

char a[10000][6];
scanf("%d", &n);
for (int i = 0;i < n;i++)
{
    scanf("%[^\n]s", a[i]);
}

for (int i = 0;i < n;i++)
{
    printf("%s\n", a[i]);
}

我得到的是错误的输出。请给我任何建议!

2 个答案:

答案 0 :(得分:1)

使用

char a[10000][6];
scanf("%d",&n);
int i;
for (i = 0;i < n;i++)
{
scanf("%s",&a[i]);
}

答案 1 :(得分:0)

我最近在我的程序中解决了这个问题。我得出的结论是,从键盘读取输入的最佳方法是逐个处理字符。您可以使用以下代码:

bool in()
{
    int i;
    int a;
    int len;
    int max;
    char *text[10000];

    //change 'max' somehow here before loop

    for(i = 0, len = 0; i < max; i++)
    {
        text[i] = NULL;

        do  
        {
            do
            {
                a = getchar();
            }
            while(a == '\n' && !text[i]);

            if(text[i])
            {
                len = strlen(text[i]);
                len++;
            }
            else
            {
                len = 1;
            }

            text[i] = realloc(text[i], sizeof(char)*(len+1));
            if(!text[i])
            {
                printf("cant realloc\n");
                return false;
            }

            if(a != '\n')
            {
                text[i][len-1] = (char) a; 
                text[i][len] = '\0'; 
            }
            else
            {
                text[i][len-1] = '\0'; 
            }
        }
        while(a != '\n');
    }

    return true;
}