当前位置: 代码迷 >> C语言 >> 请教一个数组问题
  详细解决方案

请教一个数组问题

热度:192   发布时间:2007-05-16 21:52:46.0
请教一个数组问题

小弟刚开始学C.现在以学到数组方面的问题了.今天想了一天没明白下面这个问题.请高手指点一下.不甚感激!

问题1:
#include "stdio.h"
main()
{
char a[10]="test";
printf("%s\n",a);
}
用上面这个程序可以正确的输出test

但我把他改写成
#include "stdio.h"
main()
{
char a[10];
a[10]="test";
printf("%s\n",a);
}
这样他输入就乱码了.一直没明白为什么?谢谢指点..



问题2:
#include "stdio.h"
main()
{
char a[2][10]={"test1","test2"};

printf("%s\n%s",a[0],a[1]);
}
这样写的话可以得到正确的结果.但如果我不想在char a[2][10]={"test1","test2"};这里就给数组赋值的话我要如何在程序中给这个二维的第一例和第二例分别赋一个字符串.

搜索更多相关的解决方案: include  

----------------解决方案--------------------------------------------------------
#include "stdio.h"
main()
{
char a[10];
a[10]="test";//这里相当于只给a[10]赋值.越界并且数组里面是随机值.所以乱码
printf("%s\n",a);
}
这样他输入就乱码了.一直没明白为什么?谢谢指点..

3.
for(int i=0;i<2;i++)
{
gets(a[i]);
}
----------------解决方案--------------------------------------------------------

谢谢您的回复.第一个问题以明白了.
在您回复的第二个问题中是要通过键盘来输入.如果事先没有赋值.也不通过键盘来输入的话请问是否可能达到.例如:
问题2:
#include "stdio.h"
main()
{
char a[2][10];
char b[10]="test1";
char c[10]="test2";
????//这里要写什么样的赋值?

printf("%s\n%s",a[0],a[1]);
}
我的问题是想如何通过以赋值的b[],c[]两个数组来赋值a[0]和a[1]得到输出时是
test1
test2


----------------解决方案--------------------------------------------------------

可以用循环来做:
#include<stdio.h>
main()
{ char a[2][10];
int i,j;
for(i=0;i<=1;i++)
{for(j=0;j<=9;j++)
scanf("%c",&a[i][j]);
}
printf("the string number is:\n");
for(i=0;i<=1;i++)
{for(j=0;j<=9;j++)
printf("%c",a[i][j]);}
}


----------------解决方案--------------------------------------------------------

或者用字符串函数。


----------------解决方案--------------------------------------------------------
谢谢大家的回复.以知道怎么赋值了.用STRCMP哈哈.昨天没学到这个....
----------------解决方案--------------------------------------------------------
  相关解决方案