⼆维(字符)数组输⼊(转载)
对于⼆维数组的输⼊,⼀般是⼀⾏⼀⾏的输⼊,当然也可以⼀个个来,但最好还是⼀⾏⼀⾏的输⼊。
所以⼀⾏⼀⾏的输⼊:
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]);
运⾏结果符合要求:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。