二维字符数组如何输入和输出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维字符数组如何输入和输出相关的知识,希望对你有一定的参考价值。
main()
char a[2][15];
int i,j;
for(i=0;i<2;i++)
for(j=0;j<strlen(a[i]);j++)
scanf("%s",&a[i][j]);
for(i=0;i<2;i++)
for(j=0;j<strlen(a[i]);j++)
printf("%s",a[i][j]);
为什么无法输出呢到底那里错了
这样:
#include <stdio.h>
int main()
char a[3][20];
char *p;
int i;
p=a[0];//a[0]为列指针,p指向0行0列元素,p=a[0]+j指向0行j列元素。
for (i=0;i<3;i++)gets(a[i]);
// for (i=0;i<3;i++)printf("%s\\n",a[i]);
for (i=0;i<3;i++)printf("%s\\n",p+i*20); //指针寻址
;//第二个字符串开始的地址,应该是a[0][0]后移20个字符的地方。p是指向字符的指针
数组名表示列指针*(a+i)等价于a[i]列指针
#include <stdio.h>
int main()
char a[3][20];
int i;
for (i=0;i<3;i++)gets(*(a+i));//列指针*(a+i)和a[i]等价
// for (i=0;i<3;i++)printf("%s\\n",*(a+i));
for (i=0;i<3;i++)printf("%s\\n",*(a+i));
扩展资料:
注意事项
对于二维数组的输入,一般是一行一行的输入,当然也可以一个个来,但最好的还是一行一行的输入。
所以一行一行的输入:
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]);
参考技术A 原理:二维字符数组相当于一个一维数组(每个元素就是个字符串)。输出二维字符数组,等于输出一个一维的字符串数组。
实现代码如下:
#include<stdio.h>
void main()
int i;
char name[2][25];
for(i=0;i<2;i++)
scanf("%s",&name[i]);
printf("输出:\n");
for(i=0;i<2;i++)
printf("%s\n",name[i]);
参考技术B 你的输入、输出语句都是错的,完成程序修改如下:
main()
char a[2][15];
int i,j;
for(i=0;i<2;i++) scanf("%s",a[i]);
for(i=0;i<2;i++) printf("%s",a[i]);
本回答被提问者采纳 参考技术C 多个字符串的输入输出
#include <stdio.h>
int main()
char a[3][20];
char *p;
int i;
p=a[0];//a[0]为列指针,p指向0行0列元素,p=a[0]+j指向0行j列元素。
for (i=0;i<3;i++)gets(a[i]);
// for (i=0;i<3;i++)printf("%s\n",a[i]);
for (i=0;i<3;i++)printf("%s\n",p+i*20); //指针寻址
;//第二个字符串开始的地址,应该是a[0][0]后移20个字符的地方。p是指向字符的指针
数组名表示列指针*(a+i)等价于a[i]列指针
#include <stdio.h>
int main()
char a[3][20];
int i;
for (i=0;i<3;i++)gets(*(a+i));//列指针*(a+i)和a[i]等价
// for (i=0;i<3;i++)printf("%s\n",*(a+i));
for (i=0;i<3;i++)printf("%s\n",*(a+i));
参考技术D 个人看法 如果是赋给a[i][j]的话应该是%c吧
jquery怎么获取二维数组的最后一个和除了最后一个以外的数据并输出?
jquery怎么获取二维数组的最后一个和除了最后一个以外的数据并输出?
取最后一个:arr[arr.length-1]
最后一个以外的数据输出
for(var i=0, len=arr.length-1;i<len; i++)console.log(arr[i]);
追问
为什么只能用 console.log,用alert和document.write出来是[object Object]?
参考技术A var array = [[1,2,3], [4,5,6]];var last = array[array.length - 1];
var other = array.slice(0, array.length - 1);
console.log(last);
console.log(other);
以上是关于二维字符数组如何输入和输出的主要内容,如果未能解决你的问题,请参考以下文章
C语言字符型二维数组用scanf和gets如何输入,举个例谢谢