我有一块COAD,它将一个字符串存储在一个2-d char数组中。我的代码我使用的是2x6
2-D char数组。提供12比特字符串LIKE> “COMEHOMEARUN”。它应该存储为
C O M E H O
M E A R U N
但我得到的输出为
C O M E H M
M E A R U N ...即[0] 6处的值自动获得[1] [0]的值。
这是代码
#include<stdio.h>
#include<conio.h>
void main()
{
char string[20];
char aray[1][5];
int i,j,k=0;
gets(string);
//storing the individual characters in the string in the form of 2x6 char array
for(i=0;i<=1;i++)
{
for(j=0;j<=5;j++)
{
aray[i][j]=string[k];
k++;
}
}
//displaying the array Generated
for(i=0;i<=1;i++)
{
for(j=0;j<=5;j++)
{
printf("%c ", aray[i][j]);
}
printf("\n");
}
getch();
}
有人知道我哪里出错吗?
答案 0 :(得分:4)
在char array[N][M]
等C数组声明中,N
和M
值不“最高有效索引”;它们的意思是“价值的数量”。
所以你的宣言
char aray[1][5];
根据您的意图定义一个大小为1x5,不 2x6的数组。
你需要:
char aray[2][6];
但是,当然,实际索引是基于0的,因此对于char aray[2][6]
,“last”元素位于aray[1][5]
。
答案 1 :(得分:0)
您可以尝试将char aray[1][5]
更改为char aray[2][6]
答案 2 :(得分:0)
您的索引不正确。
当你声明任何一个char数组时,你必须给出足够的长度。在您的代码中,您给出维度1,但它需要2。
将数组声明为:
char array[2][6];
这将有效。