首页 > 解决方案 > 如何将多个字符串作为输入并使用c将它们存储在二维数组中?

问题描述

以下是我用 c 语言编写的代码,我试图将字符串作为输入并将它们存储在二维数组中。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
    int i,j,n;
    scanf("%d",&n);
    char a[n][n];
    for(i=0;i<n;i++){
        scanf(" %[^\n]",a[i]);
    }
    for(i=0;i<n;i++){
        printf("%s\n",a[i]);
    }
}

以下是我的输入
4
1112
1912
1892
1234

我的例外输出应如下所示
1112
1912
1892
1234

我得到的输出低于
1112191218921234
191218921234
18921234
1234

谁能解释我的代码有什么问题?任何帮助,将不胜感激!谢谢:)

标签: carraysstringmultidimensional-array

解决方案


你需要改变:

char a[n][n];

进入:

char a[n][n + 1];

对于空终止符。没有它,char 数组将不会被终止并继续打印。

之后你会得到正确的输出:

$ gcc -o prog prog.c; ./prog
4
1112
1912
1892
1234

推荐阅读