C语言中二维字符数组应该怎样赋值?
int main()
{
char seq1[100],seq2[100],result[2][100];
int i;
printf("please put a sequence:\n");
scanf("%s",seq1);
printf("please put another sequence:\n");
scanf("%s",seq2);
result[2][0]={"seq1[0]","seq2[0]"};//我想把result数组中的第一列分别换成seq1,seq2中的第一个字符 ,该怎么写?求帮忙~
printf("%s",result);
return 0;
}
PS:result是一个二维字符数组,二位字符数组应该怎样表示呢?能赋值吗? 展开
二维数组赋值的一般形式是:dataType arrayName[length1][length2]。result二维字符数组可以这样赋值,result[0][0]=seq1[0] ;result[1][0]=seq2[0]。
dataType arrayName[length1][length2],其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。
例如:int a[3][4],定义了一个3行4列的数组,共有3×4=12个元素,数组名为a,即:
a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]
在二维数组中,要定位一个元素,必须给出一维下标和二维下标,就像在一个平面中确定一个点,要知道x坐标和y坐标。例如,a[3][4] 表示a数组第3行第4列的元素。
扩展资料:
二维数组的地址计算
有二维数组A[m][n],设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:
LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t
按“列优先顺序”存储时,地址计算为:
LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t
存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节
参考资料来源:百度百科——二维数组
1、初始化时直接赋值,例如char s[3][]={"1234","xyz","abd"};
2、拷贝赋值,例如char s[3][10]; strcpy(s[0],"123")。
int main()
{
char seq1[100],seq2[100],result[2][100];
int i;
printf("please put a sequence:\n");
scanf("%s",seq1);
printf("please put another sequence:\n");
scanf("%s",seq2);
result[0][0]=seq1[0] ;
result[1][0]=seq2[0]; //单字符赋值
printf("%c\n",result[0][0]);
printf("%c\n",result[1][0]); //按字符输出
return 0;
}
改成如下:char stack_array[][30] //根据你的程序来
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
如果不知道怎么用再问