标题 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]指的是二维数组每一行第一个元素的地址(我的理解。。)
今天的文章C语言二维字符数组的输入分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25106.html