标题 C语言字符数组的输入输出
定义一个字符二维数组,输入行数n,与列数m
#include <stdio.h>
#include <math.h>
int main()
{
int n,m,i,j;
scanf("%d %d",&n,&m);
char a[n][m];
for(i=0;i<n;i++)
{
scanf("%s",a[i]);
}
for(i=0;i<n;i++)
{
printf("%s\n",a[i]);
}
return 0;
}
运行结果:
可以看出来第一行把后面的数组元素都输出了,第二行也是
问题在于,printf("%s",a[i])输出时,是根据’\0’来进行字符串输出的结束的。而输入时,由于列数只有3,所以第一行的元素实际是XXX,而不是XXX’\0’,所以字符串的输出没有终止。
改正方法:
将列数+1即可,scanf("%s",a[i])就能在每一行最后一列加上’\0’.
char a[n][m+1];
还有这里a[i]指的是二维数组每一行第一个元素的地址(我的理解。。)