C语言 二维字符数组的输入输出问题
#include<stdio.h>voidmain(){inti;charname[2][3];for(i=0;i<3;i++){scanf("%s",&name[i])...
#include<stdio.h>
void main()
{
int i;
char name[2][3];
for(i=0;i<3;i++)
{
scanf("%s",&name[i]);
}
printf("输出:\n");
for(i=0;i<3;i++)
{
printf("%s\n",name[i]);
}
}
如输入 zhangsan lisi wangwu,如何实现输出zhangsan lisi wangwu
为什么printf里输出乱七八糟的,或者说我的方法根本就是错的。。。 展开
void main()
{
int i;
char name[2][3];
for(i=0;i<3;i++)
{
scanf("%s",&name[i]);
}
printf("输出:\n");
for(i=0;i<3;i++)
{
printf("%s\n",name[i]);
}
}
如输入 zhangsan lisi wangwu,如何实现输出zhangsan lisi wangwu
为什么printf里输出乱七八糟的,或者说我的方法根本就是错的。。。 展开
5个回答
2019-07-18
展开全部
多个字符串的输入输出
#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));
}
#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));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf("%s",&name[i]); 改为scanf("%s",name[i]);
对于数组,数组名即是其指针
而且数组大小设置不对,应改为name[3][10]
对于数组,数组名即是其指针
而且数组大小设置不对,应改为name[3][10]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把二维数组的char name[2][3]; 改成char name[3][25]; 因为你要输入的人名是3个,25代表的是人名的长度。
主要原因:申请的内存空间不够。
主要原因:申请的内存空间不够。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(i=0;i<3;i++) 改for(i=0;i<2;i++)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询