关于二维(字符)数组的输入问题
2018-01-15 17:03
363 查看
在解决PAT的团体程序设计天梯赛-练习集的L1_016:点击打开链接
遇到需要定义一个二维的字符数组,用于存储身份证号信息。此时对于二维数组的输入有一些细节问题,很重要。
对于二维数组的输入,一般是一行一行的输入,当然也可以一个个来,但最好的还是一行一行的输入。
所以一行一行的输入:
for(int i= 0;i < N;i++)
scanf("%s",perNum[i]);对于输入,单个输入用的是%c,而一行来输入就是%s。而有一个情况,此时我们的输入每行都是要存18个数字,所以想法就是设二维数组的时候,列数就是18。
char perNum[100][18];
那这个时候输入输出代码:
char perNum[100][18];
int N;
scanf("%d",&N);
for(int i= 0;i < N;i++)
scanf("%s",perNum[i]);
for(int i= 0;i < N;i++)
printf("%s\n",perNum[i]);代码的运行结果:
其中,第一行的2,是说明这个二维数组的行数。
这个时候发现,输入没问题,但输出的时候,按理来说,应该是2行18列。可是发现第一行的输出把第二行的输入也一起输出了。
这个问题在于,输出的时候,是根据\0,即换行符号判断是否要换行输出。但由于我们设定的列数才18,刚刚好只把输入给存完,这样子就没有地方存换行符(\0)。
所以这里的改进就是,把二维数组的列数至少多一位,用于存放换行符。
所以代码改为:
char perNum[100][19];//比18多一位,存放换行符
int N;
scanf("%d",&N);
for(int i= 0;i < N;i++)
scanf("%s",perNum[i]);
for(int i= 0;i < N;i++)
printf("%s\n",perNum[i]);运行结果:
符合我们的要求。
总结:
以后的二维数组,列数多一位,用于存放换行符(\0)。
遇到需要定义一个二维的字符数组,用于存储身份证号信息。此时对于二维数组的输入有一些细节问题,很重要。
对于二维数组的输入,一般是一行一行的输入,当然也可以一个个来,但最好的还是一行一行的输入。
所以一行一行的输入:
for(int i= 0;i < N;i++)
scanf("%s",perNum[i]);对于输入,单个输入用的是%c,而一行来输入就是%s。而有一个情况,此时我们的输入每行都是要存18个数字,所以想法就是设二维数组的时候,列数就是18。
char perNum[100][18];
那这个时候输入输出代码:
char perNum[100][18];
int N;
scanf("%d",&N);
for(int i= 0;i < N;i++)
scanf("%s",perNum[i]);
for(int i= 0;i < N;i++)
printf("%s\n",perNum[i]);代码的运行结果:
其中,第一行的2,是说明这个二维数组的行数。
这个时候发现,输入没问题,但输出的时候,按理来说,应该是2行18列。可是发现第一行的输出把第二行的输入也一起输出了。
这个问题在于,输出的时候,是根据\0,即换行符号判断是否要换行输出。但由于我们设定的列数才18,刚刚好只把输入给存完,这样子就没有地方存换行符(\0)。
所以这里的改进就是,把二维数组的列数至少多一位,用于存放换行符。
所以代码改为:
char perNum[100][19];//比18多一位,存放换行符
int N;
scanf("%d",&N);
for(int i= 0;i < N;i++)
scanf("%s",perNum[i]);
for(int i= 0;i < N;i++)
printf("%s\n",perNum[i]);运行结果:
符合我们的要求。
总结:
以后的二维数组,列数多一位,用于存放换行符(\0)。
相关文章推荐
- 关于c语言中的字符数组的输入问题
- 循环输入和输出二维字符数组
- 关于AutoCompleteTextView 为什么必须输入两个字符才能出现补全提示的问题的解决办法
- 关于字符串与字符数组的一些小问题
- 关于字符串 字符数组 字符型指针的问题
- 关于数组字符反转的问题
- 关于长字符数组strcpy到短字符数组发生的问题
- Ext.Net/ExtJs:关于TextField控件内size、maxLength控制文本框输入字符长度属性失效问题分析以及解决方案
- 关于限制文本框输入字符类型的问题
- 关于C语言,字符数组中越界的两个问题
- 关于C使用指针获取二维字符数组信息
- C和C++中字符数组和布尔型bool问题和Java输入
- 关于指针 用字符数组,字符指针变量输入字符串 动态为字符型指针变量分配内存
- 关于字符数组赋值问题
- 关于在页面输入特殊符号保存到数据库后,页面查询,特殊字符可以展示到页面的问题
- 字符数组中关于strlen的问题(未初始化)
- Java数组问题、实例、输入、字符;入门基础
- 关于memcpy拷贝结构体、结构体数组到字符数组(字符串)的问题
- 关于字符串,字符数组 ,局部和全局地址分配问题
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入