c - 如何将多个字符串作为输入并使用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
谁能解释我的代码有什么问题?任何帮助,将不胜感激!谢谢:)
解决方案
你需要改变:
char a[n][n];
进入:
char a[n][n + 1];
对于空终止符。没有它,char 数组将不会被终止并继续打印。
之后你会得到正确的输出:
$ gcc -o prog prog.c; ./prog
4
1112
1912
1892
1234
推荐阅读
- jenkins - github webhook 在多个 jenkins 服务器上触发作业
- javascript - 使用 VBA 在 Web 上输入数据
- reactjs - 使用 Firestore 通过“react-redux-firebase”存储配置文件数据?
- regex - 在 LFTP 中使用正则表达式锚定
- c - 是否有一个官方的 C 编译器,我如何安装它?
- maven - 获取 Maven 原型生成的资源中的绝对路径
- python - 从 docker build -f Dockerfile -t k8s-hub:0.8.2 创建时,k8s-hub 映像无效
- javascript - Node js / javascript承诺不等待完成sequelize查询
- c - GCC 定位独立代码:变量未正确加载
- c - 函数 pthread_join 的代码 - Pthread 库